2008-10-08 3 views
2

소프트웨어에 대해 작성된 테스트가 많지만 (C#에서는 기본적으로 독립 실행 형 테스트로 작성되었습니다) 이것이 제대로 작동하는 동안 몇 가지 결점이 있습니다. 표준 테스트 프레임 워크를 사용하지 않고 테스트를 실행하는 사람에게 실행해서는 안되는 테스트에 대한 호출을 주석 처리해야한다는 단점이 있습니다. (전체 테스트 '스위트'를 실행하고 싶지 않은 경우). 자동화 된 테스트 프로세스에 통합하고 싶습니다.가정용 양품 테스트 응용 프로그램을 표준 단위 테스트 프레임 워크로 변환

VS 2008의 Test Edition에는 내가 원하는 것을 수행 할 수있는 'Generic Test'라는 개념이 있지만, 현재 해당 버전에서 돈을 쓸 수있는 위치에 있지는 않습니다. 최근에 VS 2008 Pro 버전을 사용하기 시작했습니다.

  • 테스트에 대한 몇 가지 설정을 수행합니다

    이 시험 방법

    익숙한 패턴을 따른다.
  • 테스트를 실행하십시오.
  • 다음 테스트를 위해 재설정하십시오.

각각은 실패한 경우 bool (통과/실패) 및 문자열 참조를 반환하고 실패한 경우 채울 수 있습니다.

밝은면에서 적어도 테스트 방법은 일관성이 있습니다.

저는 오늘 아침에이 모든 테스트 코드를 테스트 프레임 워크로 마이그레이션하기 위해 내일 아침에 취할 수있는 접근법에 대해 생각하고 있습니다. 솔직히 말하면, 나는 8-9K 라인의 테스트 라인 코드를 직접 작성하여 변환하십시오.

그러한 전환을 경험 한 경험이 있습니까? 어떤 조언이 있으십니까? 나는 글로벌 검색/교체를하고 그것을 손으로 바꾸면서 모든 일에 매달려 있을지 모른다고 생각합니다.

의견이 있으십니까?

답변

4

만약 NUnit을 사용해야한다면, 현재의 각 테스트 메소드에 대해 새로운 테스트 메소드를 생성해야합니다. NUnit은 리플렉션을 사용하여 [Test] 속성으로 표시된 메소드를 테스트 클래스에 쿼리합니다. 이는 UI에 표시되는 테스트 목록을 빌드하는 방법이며 테스트 클래스는 NUnit Assert 메소드를 사용하여 통과했는지 여부를 나타냅니다. 실패한.

당신의 시험 방법은 당신이 말한대로 일관성있는 경우, 그 NUnit과 방법이 모두 같은 것을 보일 것이다 나에게 보인다 : 당신이 일을하는 것이 일단

[Test] 
public void MyTest() 
{ 
    string msg; 
    bool result = OldTestClass.MyTest(out msg); 
    if (!result) 
    { 
     Console.WriteLine(msg); 
    } 
    Assert.AreEqual(result, true); 

}

을, 다음 단계는 리플렉션을 사용하여 이전 테스트 클래스의 모든 테스트 메소드 이름을 가져 오는 프로그램을 작성하고 각 원래 테스트 메소드에 대해 NUnit 메소드가있는 .cs 파일을 생성하는 것입니다.

성가 시거나 어쩌면 극도로 고통스럽지는 않습니다. 그리고 당신은 한번만 할 필요가 있습니다.

+0

로버트 - 네, 저는 C# 코드 작성을 시작한 이래로 NUnit을 사용 해왔고 그것은 생명의 은인입니다. 당신의 솔루션은 훌륭하게 작동합니다 (저는 이미 변환을하기 위해 앱을 작성했습니다). 그리고 나는 당신에게 많이 감사합니다! 조심해! – itsmatt

1

"예방의 온스는 치료의 가치가 있습니다."라는 관용구를 통해 살아 가고 있습니다. 프로그래밍에서 특히 그렇습니다.

당신은 NUnit에 대해 언급하지 않습니다. (2008 년 Microsoft에서 구입했다고 생각하지만, 저를 붙 잡지 마십시오.) 첫 번째 장소에서 NUnit을 사용하지 않은 특별한 이유가 있습니까?

+0

테스트는 당시 NUnit에 익숙하지 않은 사람이 작성했습니다. 나는 그들이 모든 시험을 썼다는 것에 대해 오싹 스럽다. – itsmatt

관련 문제