1
나는 무엇을 테스트하고 무엇을 테스트하지 않는지에 대한 이해를 얻으 려합니다.단위 테스트 - 테스트 할 대상/테스트하지 않을 대상은 무엇입니까?
public static class Enforce
{
public static void ArgumentNotNull<T>(T argument, string name)
{
if (name == null)
throw new ArgumentNullException("name");
if (argument == null)
throw new ArgumentNullException(name);
}
}
는 다음과 같은 테스트가 좋다고 말할 것이 매우 간단한 유틸리티 클래스 감안할 때
? 아니면 유효한 인수가 실제로 던지지 않는 역방향 조건을 테스트해야합니까?
[Fact]
public void ArgumentNotNull_ShouldThrow_WhenNameIsNull()
{
string arg = "arg";
Action a =() => Enforce.ArgumentNotNull(arg, null);
a.ShouldThrow<ArgumentNullException>();
}
[Fact]
public void ArgumentNotNull_ShouldThrow_WhenArgumentIsNull()
{
string arg = null;
Action a =() => Enforce.ArgumentNotNull(arg, "arg");
a.ShouldThrow<ArgumentNullException>();
}
일반적으로 반대 조건을 테스트해야합니까? 아니면이 경우 가정하는 것이 안전할까요?
xUnit 및 FluentAssertions를 사용하고 있습니다.