xUnit에서 컬렉션 크기를 확인하는 관용적 인 방법은 무엇입니까?
내 테스트 스위트에 다음과 같은 테스트가 있습니다.
[Fact]
public void VerifySomeStuff()
{
var stuffCollection = GetSomeStuff();
Assert.Equal(1, stuffCollection.Count());
}
이 테스트는 예상대로 작동하지만 실행하면 xUnit이 경고를 출력합니다.
경고 xUnit2013 : Assert.Equal ()을 사용하여 컬렉션 크기를 확인하지 마십시오.
그러나 경고에서 대안이 제안되지 않았으며 Google 검색은이 경고가 인쇄되는지 확인하는 테스트를 위해 xUnit의 소스 코드로 이동합니다.
경우 Assert.Equal()
콜렉션의 아이폰에 확인하는 올바른 방법이 아닌, 무엇입니까?
명확히하기 위해 : 예를 들어 변수를 추출하거나 Assert.True(stuff.Count() == 1)
대신 사용하여 xUnit이이 경고를 표시하지 않도록 "속임수"를 사용할 수 있다는 것을 알고 있습니다. 후자는 그냥 해키하고, 전자는 xUnit이 예를 들어.의 여러 반복을 피하려고 시도하는 것처럼 느낀다. IEnumerable<T>
이것은 잘못된 방법이다. (문제라면 컴파일러 힌트를 별도로 얻을 것이기 때문이다.) xUnit 자체는 입력을 두 번 이상 평가할 필요가 없습니다 (사실 C # 함수 호출이 작동하는 방식 때문에 변수 추출에 관계없이 동일한 입력을 얻을 수 있음).
따라서 출력에서 해당 경고를 제거하는 데 관심이 없습니다. 내 질문에 대한 대답 은 처음에 그 경고가 라이브러리에 포함 된 이유 와 대신 사용해야하는 방법이 더 나은 이유 를 설명합니다 .
Xunit은 대부분의 경고에 대해 빠른 수정을 제공하므로 "옳다"고 생각하는 것을 볼 수 있어야합니다.
귀하의 경우에는 Assert.Single
정확히 하나의 항목을 기대하므로 사용하기를 원합니다 . 412와 같은 임의의 숫자를 주장하는 경우 사용에 대한 경고가 표시되지 않습니다 Count
. Single
하나의 항목을 기대하거나 항목 이 없을 경우에만 사용을 제안 Empty
합니다.
나는 이것이 나에게 같은 오류를주는 것을 발견했다.
Assert.Equal(2, vm.Errors.Count());
그리고 캐스팅하면 오류가 표시되지 않습니다.
Assert.Equal(2, (int)vm.Errors.Count());
xUnit에서 아래와 같이 Count 속성을 사용할 때 동일한 문제가 발생했습니다.
그 후 컬렉션에서 Count () 함수를 사용하면 문제가 해결되었습니다.
'Nice programing' 카테고리의 다른 글
업로드 된 파일의 MIME 유형은 브라우저에서 어떻게 결정됩니까? (0) | 2020.10.10 |
---|---|
고정 크기 HashMap에 대한 최적의 용량과 부하 계수는 무엇입니까? (0) | 2020.10.10 |
ReadOnlyObservableCollection.CollectionChanged가 공개되지 않는 이유는 무엇입니까? (0) | 2020.10.10 |
config.py에서 전역 구성 변수를 제공하는 대부분의 Pythonic 방법은 무엇입니까? (0) | 2020.10.10 |
Windows 레지스트리에서 값을 읽는 방법 (0) | 2020.10.10 |