TDD를 수행하고 단위 테스트를 작성할 때 테스트중인 "구현"코드의 첫 번째 반복을 작성할 때 "치트"하려는 충동에 어떻게 저항합니까?
예를 들어 :
숫자의 계승을 계산해야합니다. 다음과 같은 단위 테스트 (MSTest 사용)로 시작합니다.
[TestClass]
public class CalculateFactorialTests
{
[TestMethod]
public void CalculateFactorial_5_input_returns_120()
{
// Arrange
var myMath = new MyMath();
// Act
long output = myMath.CalculateFactorial(5);
// Assert
Assert.AreEqual(120, output);
}
}
이 코드를 실행하면 CalculateFactorial
메서드가 존재하지 않기 때문에 실패 합니다. 이제 테스트중인 메소드를 구현하기 위해 코드의 첫 번째 반복을 작성 하여 테스트를 통과하는 데 필요한 최소 코드를 작성합니다 .
문제는 계속해서 다음과 같이 작성하고 싶은 유혹입니다.
public class MyMath
{
public long CalculateFactorial(long input)
{
return 120;
}
}
이것은 점에서 정확한 기술적 인 정말 하는 데 필요한 최소 코드 특정 테스트 통과를 만들기 는 정말도하지 않기 때문에 A는 "속임수"분명히 비록, (친환경) 을 시도 계승을 계산하는 기능을 수행 할 수 있습니다. 물론, 이제 리팩토링 부분은 실제 구현의 리팩토링이 아닌 "올바른 기능을 작성"하는 연습이되었습니다. 분명히 다른 매개 변수로 테스트를 추가하면 리팩토링이 실패하지만 해당 테스트로 시작해야합니다.
그래서 제 질문은 "테스트를 통과하기 위해 최소 코드를 작성하는 것"과 기능을 유지하면서 실제로 달성하려는 정신에 대한 균형을 어떻게 얻습니까?