다음 중 하나를 의미합니다.
- 먼저 테스트를 작성하지 않고 원하는 기능을 수행하는 프로덕션 코드를 작성했거나 ( "종교적 TDD"위반) 또는
- 필요한 기능은 이미 프로덕션 코드로 이행되었으며 해당 기능을 다루기 위해 다른 단위 테스트를 작성하고 있습니다.
후자의 상황은 생각보다 일반적입니다. 완전히 불분명하고 사소한 (아직도 여전히 예시적인) 예로써, 다음과 같은 단위 테스트 (가짜이기 때문에 의사 코드)를 작성했다고 가정 해 봅시다.
public void TestAddMethod()
{
Assert.IsTrue(Add(2,3) == 5);
}
실제로 필요한 것은 2와 3을 더한 결과입니다.
구현 방법은 다음과 같습니다.
public int add(int x, int y)
{
return x + y;
}
그러나 이제 4와 6을 더해야한다고 가정 해 봅시다.
public void TestAddMethod2()
{
Assert.IsTrue(Add(4,6) == 10);
}
나는 이미 두 번째 경우를 다루기 때문에 내 방법을 다시 작성할 필요가 없습니다.
이제 Add 함수가 실제로 한도를 가진 숫자를 반환해야한다는 것을 알았습니다 .100이라고 가정 해 보겠습니다.이를 테스트하는 새로운 메소드를 작성할 수 있습니다.
public void TestAddMethod3()
{
Assert.IsTrue(Add(100,100) == 100);
}
그리고이 테스트는 이제 실패 할 것입니다. 이제 내 기능을 다시 작성해야합니다
public int add(int x, int y)
{
var a = x + y;
return a > 100 ? 100 : a;
}
통과시키기 위해.
상식에 따르면
public void TestAddMethod2()
{
Assert.IsTrue(Add(4,6) == 10);
}
통과하면 테스트가 실패하도록 새 코드를 작성할 수 있도록 실패한 테스트를 가질 수 있도록 의도적으로 메소드를 실패 하게 하지 않습니다 .