먼저, 제목에 대한 사과, 나는 그것을 설명하는 가장 쉬운 방법을 생각할 수 없었다!
단위 테스트를 작성하려는 방법이 있습니다. 메소드의 구현, 테스트 방법에 대해서만 논의하고 싶지 않기 때문에 상당히 일반적으로 사용하겠습니다. 방법은 다음과 같습니다
public void HandleItem(item a)
{
CreateNewItem();
UpdateStatusOnPreviousItem();
SetNextRunDate();
}
따라서이 클래스에는 하나의 공용 메소드가 있으며이 메소드는 일부 개인 메소드를 호출하여 논리를 수행합니다.
따라서 단위 테스트를 작성할 때 세 가지 작업이 모두 완료되었는지 확인하고 싶습니다. 그들은 모두 같은 실행에서 부름을 받았으므로 하나의 테스트로 할 수 있다고 생각했습니다.
public void GivenItem_WhenRun_Thenxxxxx
{
HandleItem(item);
// Assert item has been created
// Assert status has been set on the previous item
// Assert run date has been set
}
그러나 나는 그것을 세 가지 별도의 테스트로 쓸 수도 있다고 생각했습니다.
public void GivenItem_WhenRun_ThenItemIsCreated()
{
HandleItem(item);
}
public void GivenItem_WhenRun_ThenStatusIsUpdatedOnPreviousItem()
{
HandleItem(item);
}
public void GivenItem_WhenRun_ThenRunDateIsSet()
{
HandleItem(item);
}
나에게 이것은 본질적으로 요구 사항을 나열 할 때 더 좋게 보이지만 세 가지 모두 관련되어 있으며 테스트 된 메소드에서 정확히 동일한 작업을 수행해야하므로 동일한 코드를 3 번 실행합니다.
이를 위해 권장되는 접근 방법이 있습니까?
감사