나는 다음과 같은 시험이 : 법 & 어설 통일에 문제가AAA 패턴을 따르고 있습니까?
[Test]
public void VerifyThat_WhenHasInterceptorIsCalledWithAComponentModelThatHasTheLogAttribute_TheReturnValueIsTrue()
{
// Arrange
Mock<ComponentModel> mock = /* ... */;
LoggingInterceptorsSelector selector = new LoggingInterceptorsSelector();
// Act & Assert togheter
Assert.That(selector.HasInterceptors(mock.Object), Is.True);
}
거기를?
이 문제를 해결하려면 어떻게해야합니까?
편집 : 어떤 시험의 종류에 대한
:
[Test]
[Category("HasInterceptors() Tests")]
public void VerifyThat_WhenHasInterceptorsIsCalledWithANullComponentModel_AnArgumentNullExceptionIsThrown()
{
LoggingModelInterceptorsSelector selector = new LoggingModelInterceptorsSelector();
Assert.That(new TestDelegate(() => selector.HasInterceptors(null)), Throws.TypeOf<ArgumentNullException>());
}
행위 및 어설 제대로 주장하기 위해 같은 줄에 있어야합니다. 적어도 그것은 그것이 내가 이해하는 것입니다.
무엇
하나 이것에 대해 :[Test]
[Category("HasInterceptors() Tests")]
public void VerifyThat_WhenHasInterceptorsIsCalledWithANullComponentModel_AnArgumentNullExceptionIsThrown()
{
LoggingModelInterceptorsSelector selector = new LoggingModelInterceptorsSelector();
var testDelegate = new TestDelegate(() => selector.HasInterceptors(null));
Assert.That(testDelegate, Throws.TypeOf<ArgumentNullException>());
}
이는 AAA 패턴을 준수 하는가 더 나은?
그럼 어떻게해야합니까? 자세한 내용은 편집을 참조하십시오. –
하지만 ExpectedExceptionAttribute는 테스트의 Assert 단계를 흐름에서 사라지게 만듭니다 (또는 흐름의 속성 부분을 고려하면 먼저 나타납니다). –
@the_drow - 선명도와 분리가 유지됩니다. 이것이 AAA의 추진력입니다. 명료성과 분리 성이 있으므로 아무 것도 잃지 않습니다. 그리고 사람들은 이러한 방식으로 예외를 테스트하는 데 익숙합니다. – Oded