Java에 대한 단위 테스트의 자동 생성?
Java 코드에 대한 단위 테스트를 자동으로 생성하는 도구가 있습니까?
업데이트: 주요 용도는 리팩토링할 레거시 코드에 대한 단위 테스트를 빠르게 생성하는 것입니다. 자동 생성 후 코드와 동기화된 테스트를 자동으로 유지할 필요가 없습니다.
거의 동일한 질문이 여기에서 요청되었지만 대답은 Java 대신 .NET에 대한 것이었습니다( Pex 가 허용된 답변임).
- CodePro Analytix 에는 원하는 작업을 수행하는 것처럼 들리는 JUnit 테스트 생성 모듈이 있습니다. 사용 설명서 를 참조하십시오 .
- [CoView]는 사용자당 연간 $9.99에 불과한 합리적인 가격의 제품이었습니다. 안타깝게도 더 이상 존재하지 않습니다.
- AgitarOne Automated JUnit Generation 은 조사할 가치가 있습니다.
세 가지 제품 모두 옵션을 구매하기 전에 사용해 볼 수 있으므로 생성된 코드를 애플리케이션의 작은 하위 집합과 비교하는 데 사용할 수 있습니다.
상용 도구:
- AgitarOne 은 이 분야에서 가장 큰 선수인 것 같습니다. 또한 존재한다 30 일 평가판 및라는 무료 웹 인터페이스 의 JUnit 공장 . 예를 들어 여기에 도구 사용에 대한 독립적인 검토가 있습니다. AgitarOne의 테스트 생성은 회귀 테스트에 크게 중점을 둡니다.
- Jtest 는 1998년부터 존재해 온 또 다른 큰 업체입니다. 무료 평가판이 존재합니다. AgitarOne과 Jtest는 모두 여러 번 수상 했으며 둘 다 Eclipse 기반 IDE입니다.
- SilverMark Test Mentor, Java Edition 은 Java 코드를 기반으로 테스트를 생성할 수도 있는 상용 제품입니다. 이 제품은 경험이 없습니다.
무료 도구:
- CodePlex AnalytiX 는 상용 도구였습니다(2001년 Eclipse용 최초 상용 플러그인). 그러나 Google이 개발 중인 회사를 인수한 이후로 제품이 무료로 출시되었습니다. Eclipse 기반의 완전한 IDE이며 2007년 테스트 생성에서 Jolt Award 최종 후보에 올랐습니다. 기능은 훌륭하지만 도구가 오랫동안 업데이트되지 않았기 때문에 불행히도 현재 버전의 Eclipse에서는 작동하지 않습니다. Java >= 1.5가 필요한 코드에 문제가 있는 것 같습니다.
- EvoSuite 는 SBST(검색 기반 소프트웨어 테스팅) '13 단위 테스트 생성 대회 와 SBST '17 단위 테스트 생성 대회에서 우승했습니다 . Eclipse 플러그인, 웹 인터페이스 및 도구의 명령줄 버전이 있습니다. 회귀 기준이 문서화되어 있지만 아직 작동하지 않는 것 같습니다. 테스트는 분기 적용 범위, 약한 돌연변이 적용 범위 또는 강한 돌연변이 적용 범위에 대한 대상을 생성했습니다.
- Randoop 은 피드백 지향 무작위 테스트 생성 방식을 사용합니다. 이 도구는 2007년부터 사용되었으며 지속적으로 개발되고 있습니다. Randoop은 회귀 테스트와 오류 찾기 테스트를 모두 생성할 수 있습니다. 강력하고 안정적인 명령줄 도구이며 Eclipse 플러그인도 존재합니다.
- Palus 는 동적 및 정적 분석을 모두 사용한다고 주장하며 Randoop을 기반으로 구축됩니다. 작성자는 이것이 Google 내부적으로 사용되었다고 주장합니다. 이 소프트웨어에 대한 제 경험에 따르면 최소한 현재 버전(0.2)에는 내부 문제가 있는 것 같고 제대로 확장되지 않는 것 같습니다.
- Daikon , Eclat , Javalanche , Java PathFinder , JCrasher , jWalk , Korat , RecGen 및 ReCrash 도 사용할 수 있는 무료 도구입니다.
Jtest와 AgitarOne에서 생성한 테스트는 둘 다 라이선스가 있는 러너에 의존하며 플러그인이 통합되어 있지 않으면 실행할 수 없습니다. 이것은 독립적인 테스트를 생성하는 내가 테스트한 무료 도구의 경우가 아닙니다.
면책 조항: 저는 이러한 도구와 관련이 없지만 주제에 대한 학술 연구를 수행했습니다.
Netbeans 8에는 스텁 이상의 단위 테스트를 빌드하는 기능이 내장되어 있습니다. 이 기능을 사용하려면:
- 테스트하려는 클래스를 엽니다.
- 메뉴
Create/Update Tests
에서 선택Tools
합니다. - 원하는 기능을 선택하세요.
- 생성된 단위 테스트를 열고 테스트의 나머지 부분을 완료합니다.
Agitar에는 AgitarOne 이라는 도구가 있었던 것 같습니다 . 나는 당신이 여전히 그것을 얻을 수 있다고 생각하지만 회사가 여전히 거기에 있는지 확인하십시오.
NetBeans는 Java 소스 파일에서 자동으로 수행합니다(다른 IDE도 마찬가지입니다).
junit 플러그인을 살펴볼 수 있습니다(링크가 현재 다운됨 :-()?
Randoop https://randoop.github.io/randoop/ 을 사용하는 것은 어떻습니까 ? 이것은 Java와 .NET 모두에서 작동합니다.
ReferenceURL : https://stackoverflow.com/questions/2131935/automatic-generation-of-unit-tests-for-java
'IT이야기' 카테고리의 다른 글
WCF: 속성 대 구성원의 DataMember 특성 (0) | 2021.10.04 |
---|---|
프로그램 내에서 python의 버퍼링되지 않은 stdout(python -u에서와 같이) (0) | 2021.10.04 |
word-wrap:break-word가 IE8에서 작동하지 않음 (0) | 2021.10.03 |
단일 코어에서 모두 실행되는 Python 스레드 (0) | 2021.10.03 |
Enumerable.ElementAt() 대 [] 연산자를 사용하는 이유 (0) | 2021.10.03 |