Ruby on Rails로 TDD를 시작하는 방법은 무엇입니까? [닫은]


167

나는 개념을 잘 알고 있지만 (대학에서 시험 수업을 들었다), "실제"TDD 프로젝트를 수행 한 적이 없기 때문에 실제로 어떻게 사용하는지 잘 모르겠습니다.

Ruby on Rails (대부분 2.3 사용)를 사용하여 프로젝트 개발을 시작하려고합니다. 이 응용 프로그램은 데이터, 사용자 및 일부 파일을 관리하는 데 사용됩니다. 처음에는 너무 복잡하지는 않지만 향후 6 개월 내에 확장이 커질 수 있으므로 TDD에 더 많은 시간을 투자 할 수 있다고 생각합니다.

나는 그것을하는 방법에 대한 기본 아이디어를 가지고 있지만 여전히 몇 가지 조언과 조언이 필요합니다.

  • 어떤 Ruby on Rails TDD 101 기사를 읽어야합니까?

  • 무엇을 테스트해야합니까?

  • 어떤 보석 / 플러그인을 사용해야합니까?

  • rspec을 사용해야합니까 ? 다른 것?

  • 모든 테스트 수업을받은 후에는 어떻게 진행하고 배포합니까? (예 : 지속적인 통합)

  • TDD에 시간이 얼마나 걸리나요?

  • 이것에 관한 책을 읽어야합니까, 아니면 책을 가지고 놀거나 온라인 자습서를 읽음으로써 모든 것을 얻을 수 있습니까? 책을 읽어야한다면 어떤 책입니까?


나는 예제를 배우는 것을 좋아하기 때문에 누군가가 내가 어떻게이 문제를 해결하기 위해 TDD 접근법을 취할 것인지 말해 줄 수 있습니까?

회사가 있습니다. 연락처가 있습니다. 한 회사에 연락처를 연결할 수 있습니다. 회사는 여러 연락처를 가질 수 있습니다. 연락처, 회사를 만들고 연락처를 회사에 연결하는 방법을 만들고 싶습니다.

답 에이 예제를 사용할 필요는 없지만 도움이 될 것입니다. :)

답변:


202

어떤 Ruby on Rails TDD 101 기사를 읽어야합니까?

레일 애플리케이션 테스트 가이드로 시작하겠습니다 .

또한 Railscast 에는 다양한 테스트 도구를 사용하는 방법에 대한 훌륭한 스크린 캐스트가 있습니다.

무엇을 테스트해야합니까?

테스트하기 쉽기 때문에 모델부터 시작하겠습니다. 간단한 규칙은 테스트의 모든 if 문을 포함해야한다는 것입니다.

모든 엣지 케이스뿐만 아니라 메소드의 목적 (방법이 예상대로 작동하는지 확인)을 테스트해야합니다.

또한 테스트를 끝내지 않도록하십시오.

어떤 보석 / 플러그인을 사용해야합니까? rspec을 사용해야합니까? 다른 것?

시작할 때을 사용하십시오 Test Unit. 기본 사항에 익숙해 rspec지거나 사용 cucumber하면됩니다.

Autotest당신이 진정으로 테스트 주도되고 싶다면 좋은 도구입니다. 그러나 '좋은 것'은 필요하지 않습니다.

모든 테스트 수업을받은 후에는 어떻게 진행하고 배포합니까?

질문이 확실하지 않습니다. 일반적으로 테스트를 배포하지 않습니다. 모든 테스트 클래스를 갖추면 간단한 테스트 'rake test'를 입력하여 모든 테스트를 실행하십시오.

TDD에 시간이 얼마나 걸리나요?

정말 시간이 절약됩니다. 당신이 미로 퍼즐을 좋아한다면, 당신은 거의 처음부터 끝까지 그것을 해결하는 것이 항상 쉽다는 것을 알고 있습니다. TDD와 동일합니다. Test Driven 없이는 '다음에해야 할 일'을 꾸준히 생각하고 있습니다. Test Driven을 사용하면 다음에 수행 할 작업이 테스트에 표시됩니다 (논리가 없으면 중단되므로 깨진 부분 만 수정하면 됨). 또한 버그가 적어 장기적으로 많은 시간을 절약 할 수 있습니다.

이것에 관한 책을 읽어야합니까, 아니면 책을 가지고 놀거나 온라인 자습서를 읽음으로써 모든 것을 얻을 수 있습니까? 책을 읽어야한다면 어떤 책입니까?

책이 필요 없습니다. 무엇이든 배우는 가장 효율적인 방법은 바로 그렇게하는 것입니다. 질문이나 문제가 발생하면 책이나 온라인 자료로 돌아가십시오. 이것도 민첩합니다.

예를 들어 테스트해야 할 사항은 다음과 같습니다. 연락처는 한 회사에 연결될 수 있고, 회사는 여러 연락처를 가질 수 있으며, 연락처를 작성하는 방법을 작성하고, 연락처를 회사에 연결할 수 있습니다.

class CompanyTest <Test::Unit
    def test_relationship # test associations/relationships
        c = companies(:some_company)
        assert_equal [a list of contacts], c.contacts # make sure a company can have multiple contacts
    end
end

class ContactTest<Test::Unit
   def  test_relationships
        c = contact(:some_contact)
        assert_equal some_company, c.company # make sure the contact link to 1 company
   end

   def  test_create/add
        # test create contacts, here you need to make sure the contact is created correctly, and linked to company correctly
   end
end

3
기사에 대한 링크가 깨진하지만, 여기 발견된다 : web.archive.org/web/20100325215651/http://bloritsch.d-haven.net/...
fivetwentysix




5

TDD는 먼저 테스트 작성에 관한 것입니다. 기본적으로 응용 프로그램 코드를 작성하기 전에 자신의 클라이언트를 작성해야합니다. 주기는 일반적으로 존재하지 않는 API에 대한 테스트를 작성하고, 실패 할 것으로 예상하는 테스트를 실행하고, API 코드를 작성하고, 테스트를 다시 실행하여 통과하는지 확인합니다. 그런 다음 다음 테스트를 작성하십시오.

Rails 안내서에 관심이있을 수도 있습니다 .



3

어떤 보석 / 플러그인을 사용해야합니까?

나는 항상 shoulda를 즐겼다 .

TDD에 시간이 얼마나 걸리나요?

TDD 개발을 항상 선호하는 이유는 특정 코드를 구현하는 방법에 초점을 맞추기 때문입니다. TDD 원칙을 더 강하게 준수 할 때마다 나중에 재 작업하는 데 시간이 덜 걸린다는 일화적인 느낌이 듭니다. 그래도 단위 테스트를 얼마나 잘 작성 하느냐에 시간이 많이 걸립니다. 단위 테스트에서 예상되는 동작을 캡처하지 않으면 해당 테스트에 소요 된 모든 시간이 낭비됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.