매개 변수 (예 : string
)를 받고 간단한 방법을 쓰는 간단한 방법을 작성해야합니다. 보통 두 가지 테스트가 끝납니다. 첫 번째 것은 guard clause입니다. 두 번째는 예상 동작을 확인할 것 (편의상, 방법은 실패 안) :FsCheck 속성 특성을 사용할 때 Null 값을 제외하는 방법은 무엇입니까?
[Fact]
public void DoSmth_WithNull_Throws()
{
var sut = new Sut();
Assert.Throws<ArgumentNullException>(() =>
sut.DoSmth(null));
}
[Fact]
public void DoSmth_WithValidString_DoesNotThrow()
{
var s = "123";
var sut = new Sut();
sut.DoSmth(s); // does not throw
}
public class Sut
{
public void DoSmth(string s)
{
if (s == null)
throw new ArgumentNullException();
// do smth important here
}
}
을 나는 수많은 다른 임의의 값이 전달됩니다 null
및 임의의 데이터를 생성하는 FsCheck[Property]
속성을 사용하려고 할 때 어떤 점에서 NRE을 유발 시험 :
[Property]
public void DoSmth_WithValidString_DoesNotThrow(string s)
{
var sut = new Sut();
sut.DoSmth(s); // throws ArgumentNullException after 'x' tests
}
나는이 확실히 대단한 다른 경우를 충당하기 위해 많은 임의의 데이터를 생성하는 FsCheck의 전체 아이디어는 것을 알고 있습니다.
[Property]
속성을 바람직하지 않은 값을 제외하도록 구성하는 우아한 방법이 있습니까? (이 테스트에서는 null
입니다.)
불행히도 C#에는 [NotNull] 속성이 없습니다 (적어도 소스 코드에서 찾을 수 없음). –
@SergeyShushlyapin 그것은 속성이 아니며 유형입니다. 그것은 'FsCheck.Xunit'이 아니라'FsCheck'에 정의되어 있습니다. –
아, 그건'No_n_Null'입니다! 나는 'No_t_Null'을 찾고있었습니다, 미안합니다, 미안 해요. 예, 작동합니다. 고마워요! –