동안 너무 쉬울 수있는 테스트를 제거해야합니까? 저는 TDD 방식을 고수했습니다. 그래서 나는 몇 가지 검사를했고 모두 실패합니다. 이제 구현 중입니다. 그러나 이제는 구현하는 방법이 너무 간단해서 실패하는 것을 보았습니다. 특히 나는 관찰자 패턴을 구현했으며 모든 일은 등록 된 모든 관찰자에게 통보한다는 것입니다. 따라서 각 루프마다를 사용하고 알림을 호출하십시오. 이것은 확실히 너무 쉽게 부서지기 쉬운 것처럼 들립니다. 이제는 테스트를 통해 삭제해야합니까? 이것은 또한 약간의 낭비로 보입니다. 그래서 나는 너무 쉬울 수있는 방법을 시도하고 예상해야합니까?TDD
TDD
답변
번호
방법은 지금 휴식이 너무 간단 할 수도 있지만 그들이 미래에 수정 (및 부서) 할 필요가 없을거야 의미하지 않는다.
for (i = 0; i < observers.length; ++i) {
// Notify observer observers[i]
}
그것은 생각하는 유혹하지만,이 일반적인 실수 고려 :
당신이 실패를 너무 간단하게 말을하는지
for (i = 0; i <= observers.length; ++i) {
// Notify observer observers[i]
}
을 또는이 하나
for (i = 0; i < observers.length; ++j) {
// Notify observer observers[i]
}
또는 옵서버가 올바르게 추가되지 않을 수도 있습니다. 또는 ... 또는 ...
테스트를 이미 거쳤다면 소프트웨어를 제거 할 필요가 없어지며 시간이 지남에 따라 함수가 커지는 경향이 있습니다. 따라서 단순한 것입니다. now 당신의 테스트가 당신에게 도움이되기로되어있는 바로 그 종류의 것일 수 있습니다.
아니요 for Each 문. For Each 문은 언어 구조이므로 기본적으로 컴파일러를 다시 테스트합니다. 그것은 int i = 0 등 정상적인 루프라면 그럴 것입니다. – uriDium
@uriDium : 네가 사용하는 언어 나 구조를 나타내지 않았으므로 공통 분모를 사용했다. 요점은 여전히 있습니다. 사실상 아무 것도 잘못 되기는 너무 간단하지 않으며 기능은 시간이지나면서 복잡 해지는 경향이 있습니다. –
@ T.J. 나는 동의한다, foreach를 테스트하는 포인트가 없을 수도 있지만 iterator 블록을 테스트하고있다. whiter는 커스텀 반복자가 될 수 없다고 말할 것이다. 물론 이것은 자체 테스트를 가져야한다. 그러나이 foreach를 말할 필요가있다. 테스트가 놓친 것을 찾지 못할 것입니다. –
예; 기본 컴파일러/가상 컴퓨터의 기능을 테스트하는 경우 테스트가 너무 간단합니다. 즉, 실행중인 컴파일러/가상 시스템의 특정 부분을 신뢰하지 않는 한 말입니다.
물론 테스트의 현실은이 질문에 대한 예/아니오 답변보다 조금 복잡합니다. 다른 답변에서 언급했듯이 이미 테스트를 작성한 경우 테스트를 삭제하지 마십시오. 그러나 코드 커버리지 컨텍스트에서 신뢰를위한 인수로 사용해서는 안됩니다.
정확하게 수행하고 있습니다. 먼저 실패한 테스트를 작성한 다음 수정합니다. 테스트를 혼자 맡기고 미래에 버그가 재현 될 필요가 있다고 판단되면 더 복잡한 테스트를 작성하십시오.
테스트가 많을수록 향후 고통이 줄어 듭니다. 그들의 단순성을 절대로 생각하지 마십시오.
이제 모든 테스트를 통과하면 테스트를 통과하게됩니다. 그들이 충분히 빨리 달리고 있다면 그들은 누구에게도 부담이되지 않을 것입니다.
그러나 나중에 한 번에 하나의 테스트를 수행하여 이라고 쓰고 싶을 수 있습니다. (The Three Rules 참조). 이는 코드를 개발하는 동안 디자인이 향상 될 수 있기 때문입니다.
모든 테스트가 실패하고 구현이 없으면 디자인을 수정했지만 이제는 디자인을 리팩토링하거나 개선하기 위해 싫어할 수 있습니다.
각 구현 단계가 지나친 것보다 많은 테스트가 중단 될 수 있으므로 코드를 구현하는 데 어려움을 겪었을 것으로 추측됩니다.하지만 이봐, 나는 단지 추측입니다!
- 1. 다이어그램이있는 TDD
- 2. TDD with IronPython
- 3. 간단한 예제로 TDD 학습하기
- 4. 추상화 계층을 만드는 TDD
- 5. TDD with NHibernate
- 6. C++ & 적절한 TDD
- 7. TDD Spider Solitaire
- 8. TDD 테스트가 항상 실패해야합니까?
- 9. TDD with DataGridView
- 10. TDD 및 DDD 시작하기
- 11. TDD django 모델
- 12. TDD 및 테스트 데이터
- 13. TDD with Web Config
- 14. OpenXml-SDK에서 TDD 사용
- 15. TDD 저장 프로 시저
- 16. TDD in python 3.1
- 17. VB.NET 및 NUnit - TDD
- 18. 팀에게 TDD 판매하기
- 19. TDD 및 코드 커버리지
- 20. symfony2 tdd 개발
- 21. 학습에 관한 질문 TDD
- 22. Mockery는 TDD 방지 패턴입니까?
- 23. BDD/TDD 대 JAD?
- 24. "Hello World"- TDD 방식?
- 25. TDD grails views
- 26. Automapper + TDD + MVC 초기화
- 27. 정확히 TDD 란 무엇입니까?
- 28. TDD with Strategy Pattern
- 29. TDD 테스트 구조 질문
- 30. 복합 함수에 대한 TDD 접근법
의견을 보내 주셔서 감사합니다. 그런 다음 나중에 지금 맡기고 메소드가 변경되면 나중에 추가해야합니다. 명백한 위험은 단위 테스트를 업데이트하는 것을 잊어 버리는 것입니다. 그러나 변경 작업을 수행 할 때도 변경 사항에 대한 단위 테스트를 작성해야하므로이를 파악해야합니다. – uriDium
간단한 테스트를 그대로 두십시오. 메소드를 변경해야하는 경우 심각한 변경 사항이 발생하면 유닛 테스트를 수정해야합니다. 그러나 그것이 급격한 변화가 아니며 테스트가 작동을 멈 추면 변경에 버그가 있습니다. –