반응형
XUnit을 사용하여 예외 확인
저는 XUnit과 Moq의 초보자입니다. 문자열을 인수로 사용하는 메서드가 있습니다 .XUnit을 사용하여 예외를 처리하는 방법.
[Fact]
public void ProfileRepository_GetSettingsForUserIDWithInvalidArguments_ThrowsArgumentException() {
//arrange
ProfileRepository profiles = new ProfileRepository();
//act
var result = profiles.GetSettingsForUserID("");
//assert
//The below statement is not working as expected.
Assert.Throws<ArgumentException>(() => profiles.GetSettingsForUserID(""));
}
테스트중인 방법
public IEnumerable<Setting> GetSettingsForUserID(string userid)
{
if (string.IsNullOrWhiteSpace(userid)) throw new ArgumentException("User Id Cannot be null");
var s = profiles.Where(e => e.UserID == userid).SelectMany(e => e.Settings);
return s;
}
Assert.Throws의 표현은 예외를 잡아 유형을 주장한다. 그러나 assert 식 외부에서 테스트중인 메서드를 호출하므로 테스트 케이스가 실패합니다.
[Fact]
public void ProfileRepository_GetSettingsForUserIDWithInvalidArguments_ThrowsArgumentException()
{
//arrange
ProfileRepository profiles = new ProfileRepository();
// act & assert
Assert.Throws<ArgumentException>(() => profiles.GetSettingsForUserID(""));
}
AAA를 따르는 데 구부러지면 액션을 자체 변수로 추출 할 수 있습니다.
[Fact]
public void ProfileRepository_GetSettingsForUserIDWithInvalidArguments_ThrowsArgumentException()
{
//arrange
ProfileRepository profiles = new ProfileRepository();
//act
Action act = () => profiles.GetSettingsForUserID("");
//assert
Assert.Throws<ArgumentException>(act);
}
AAA에 대해 엄격하게 알고 싶다면 xUnit의 Record.Exception 을 사용 하여 Act 단계에서 예외를 캡처 할 수 있습니다 .
그런 다음 Assert 단계에서 캡처 된 예외를 기반으로 어설 션을 만들 수 있습니다.
이것의 예는 xUnits 테스트 에서 볼 수 있습니다 .
[Fact]
public void Exception()
{
Action testCode = () => { throw new InvalidOperationException(); };
var ex = Record.Exception(testCode);
Assert.NotNull(ex);
Assert.IsType<InvalidOperationException>(ex);
}
It's up to you what path you want to follow, and both paths are fully supported by what xUnit provides.
참고URL : https://stackoverflow.com/questions/45017295/assert-an-exception-using-xunit
반응형
'program tip' 카테고리의 다른 글
AngularJS에서 $ watching을 어떻게 중지합니까? (0) | 2020.10.21 |
---|---|
CMake를 사용하여 소스 디렉터리에서 바이너리 디렉터리로 파일 복사 (0) | 2020.10.21 |
모든 Ajax 호출이 언제 완료되는지 아는 방법 (0) | 2020.10.21 |
Python 표시 문자열을 여러 번 (0) | 2020.10.21 |
xxhdpi Android의 스케일 팩터? (0) | 2020.10.20 |