2012-11-27 2 views
2

MonoDevelop/.Net에서 단위 테스트를 자동으로 생성하려고합니다.MonoDevelop/.Net에서 단위 테스트를 자동으로 생성하는 방법은 무엇입니까?

NUnit을 시도했지만 테스트를 생성하지 않습니다. Eclipse에서는 randoop 플러그인을 사용하지만 Java 및 JUnit을 대상으로합니다.

MonoDevelop 및/또는 .Net의 단위 테스트를 어떻게 자동으로 생성합니까? 아니면 거기에 기존 도구가 있습니다. 내가 알지 못합니다 ...

+1

내게 단위 테스트를 "자동으로"생성하려는 방법이 명확하지 않습니까? randoop은 임의 코드 (즉, 메소드 호출)를 생성하고 매우 원시적 인 속성이나'equal()'을 검사하는 것 같습니다. .NET에 대해 똑같은 작업을 수행하는 도구를 찾고 있습니까? (그런 도구는 알지 못합니다 ...)? 제 의견으로는 이것은 단위 테스트에 대한 좋은 접근 방법이 아닙니다. – MartinStettner

+0

다른 가능한 값을 가진 클래스의 메소드에 대한 호출을 생성해야하고, 실행 후 테스트가 통과하고 실패한 보고서를 생성해야합니다. 이것은 플러그 여야합니다. - Monodevelop 용. 거기 게임의 proyect가 있습니다 – eduardosufan

+0

테스트 할 클래스가 주어진 클래스의 공용 메소드에 대한 단위 테스트의 골격을 생성 할 도구를 찾고 있습니까? – dgvid

답변

8

다른 (임의의) 입력이있는 호출 방법은 프로세스의 한 부분 일뿐입니다. 또한 각 입력에 대해 올바른 결과를 정의해야하며, 도구가이를 수행 할 수 있다고 생각하지 않습니다.

randoop은 equal의 매우 기본적인 속성 만 검사하는 것으로 보이는데,이 기능은 유용하지 않으며 정확성에 대한 잘못된 인상을 줄 수도 있습니다 ("이봐, 모든 테스트는 통과하고 내 소프트웨어는 괜찮습니다").)

또한 무작위로 코드 (및 입력)를 생성하면 테스트 결과가 불확실해질 수 있습니다. 코드에서 실제로 결함을 발견 할 수도 있고 그렇지 않을 수도 있습니다. (이 CodeProject article 매우 간단한 설명)

  • 당신은 테스트 케이스 생성기를 사용에 관심이있을 수 있습니다 촬영할 수있는 접근 방식에 대해 말했다

    는, 빠른 인터넷 검색은 다음의 시작 포인트를 주었다. 그들은 "보일러 판"코드를 생성 할 수 있도록 지원하고 테스트 할 클래스/메소드를 놓치지 않도록 할 수 있습니다. 물론, 생성 된 테스트는 적절한 (즉, 의미있는) 입력 및 (정확한) 출력 값을 정의함으로써 적응 될 필요가있다. "NUnit 테스트 생성기"에 대한 인터넷 검색은 여기에 반복하고 싶지 않은 상용 소프트웨어에 대한 다른 링크를 제공합니다 ...
  • NUnit (및 기타 테스트 프레임 워크) 지원 매개 변수화 된 테스트를 사용합니다. 전체 입력 시나리오를 테스트 할 수 있습니다. NUnit 들어, 난 당신의 방법에 대한 임의의 입력 (특정 범위에서) 생성 할 수있는 Random 특성을 발견. 위에서 무작위로 테스트 입력에 대해 쓴 것을 기억하십시오.이 테스트의 결과는 자동 또는 회귀 테스트에서 쓸모 없도록 재현 할 수 없습니다.

도 자동 단위 테스트 생성에 대한 내 주장 을 지원할 수 this question (SO에 확실히 다른 사람),보고, 말했다.

+0

도움을 주셔서 감사합니다. CodeProyect 기사를 사용하고 수동으로 테스트 사례를 작성했습니다. – eduardosufan

+0

해당 설명서에 따라 Randoop은 equals 속성 이외의 다른 항목을 검사합니다. 또한 테스트의 진정한 목적 인 동작이 실행마다 변경되지 않도록 풍부한 주장을 사용하여 회귀 테스트를 만들 수 있습니다. 테스트 케이스로 바꾸고 싶지 않은 많은 실행을 실행하여 버그를 찾는 것도 유용하며 Randoop도이를 수행 할 수 있지만 자동으로 테스트 스위트를 만드는 것과는 관련이 없습니다. – mernst