2008-09-04 5 views
5

"메시지"를 단위 테스트에 추가하여 NUnit에서 생성 한 TestResult.xml 파일 내에 실제로 나타나도록하고 싶습니다. 예를 들어, 현재 생성됩니다NUnit의 TestResult.xml 파일에 추가 정보

<results> 
    <test-case name="MyNamespace.Tests.MyTest" executed="True" success="True" time="0.203" asserts="4" /> 
</results> 
내가 추가 속성을 가질 수 (또는 경우에 따라 노드)와 같은, 싶습니다

: 아이디어는 점이다

<results> 
    <test-case name="MyNamespace.Tests.MyTest" executed="True" success="True" time="0.203" asserts="4" message="Tested that some condition was met." /> 
</results> 

위의 "message"는 테스트 메소드 자체 내에서 어떻게 든 정의 될 것입니다 (제 경우에는 런타임에 생성됩니다). 이런 식으로 뭔가를 할 수 없기 때문에 어딘가에 재산이 있습니까?

답변

2

이 부분이 누락되었을 수 있지만 테스트에 이름을 지정하여 테스트 내용을 나타내려면 어떻게해야합니까? 그러면 메시지가 필요하지 않을 수도 있습니다.

절대적으로 필요한 것으로 판명되면 TestCase에서 추가 특성을 읽고 출력에 첨부 할 고유 한 테스트 러너를 만들어야한다고 생각합니다.

+0

당신은 내가 리플렉션 마술을하고 런타임에 테스트를 동적으로 만들고 이름을 지정하거나 사용자 정의 테스트 러너를 만들어야한다는 것을 확인했습니다. –

+0

당신은 완전히 벗어난 것이 아닙니다. 그러나 TestResult.xml에 추가하려는 테스트중인 조건은 일반적으로 런타임까지 알 수 없습니다. 지금 당장 간단히 Console.WriteLine이라고합니다. 이 테스트는 실제로 최종 상태 값만이 실제로 표기되는 "테스트 주자 (test runner)"라고 부른다. 이 같은 라인을 따라 리플렉션을 사용하여이 테스트 방법을 동적으로 만들고 이름을 지정할 수 있다고 생각합니다. 그러나 나는 그것이 밖으로 나가기 시작하고 있다고 생각합니다.:-) 나는 그 동안 TestRunner를 만드는 것을 계속 조사 할 것입니다. –

0

런타임에는 사용할 수있는 것이 보이지 않지만 조사 할만한 몇 가지 기능이 있습니다. Description 속성과 Property 속성은 둘 다 텍스트를 XML 출력 파일에 추가합니다. 불행히도 컴파일 타임에 둘 다 정의됩니다. 최근 NUnit과에서

5

은 당신이 할 수있는 출시 : "여기에 어떤 메시지가"일정한 메시지 또는 메시지 실행시에 생성되고 문자열 변수에 저장 될 수 있습니다

Assert.AreEqual(250.00, destination.Balance, "some message here"); 

. 이러한 메시지는 어설 션이 실패한 경우에만 출력에 표시됩니다. 그러나 일반적으로 실패한 테스트에 대한 정보 만 필요하므로 각 이전 메시지를 추가 한 다음 해당 문자열 변수를 모든 사용자 어설 션의 메시지로 사용하여 문자열을 작성하는 것이 좋습니다. 이를 통해 실패한 테스트에서 필요한 모든 정보를 얻을 수 있습니다.

+0

환상적인 그것이 바로 제가 찾고있는 것입니다! –

0

TestContext를 사용하여 원하는 메시지를 쉽게 작성할 수 있습니다. 다음은 내가 설정하는 방법입니다.

각 테스트는 테스트베이스 클래스에서 상속됩니다. 중복 코드가 제거됩니다.

아래의 두 함수가 해당 TestContext에서 메시지 나 오류를 작성하는 것을 볼 수 있습니다. 이것은 parallizable 테스트와도 잘 작동합니다.

그런 다음 해당 부모 클래스를 사용하여 테스트를 설정하고 내 콘솔에 쓸 수 있습니다.

//Role Management 
public class RoleManagementTests : TestBase 
{ 
    [TestCase] 
    public void RoleManagement_7777_1() 
    { 
     Comment("Expected: User has the ability to view all roles in the system."); 
     //Test goes here 
    } 
} 

이제 출력 (비주얼 스튜디오)와 NUnit과 콘솔 러너를 사용하여 TestResult.xml에서 결과를 볼 수 있습니다.