귀하의 질문은 나에게 두 가지 접힌 것 같습니다. 하나는 두 개의 테스트 프레임 워크를 비교하고 싶고, 다른 한편으로는 테스트를 쉽게 구현하고 싶고, 자연스러운 어설 션을 갖고 싶었다는 것입니다.
좋아, 첫째로 JUnit은 기능 측면에서 TestNG를 따라 잡았고 v4와의 격차를 해소했지만 내 의견으로는 충분하지 않습니다. 주석 및 데이터 제공자와 같은 것들은 TestNG에서 여전히 훨씬 더 좋습니다. 또한 TestNG에는 테스트 종속성, 그룹화 및 순서가 있기 때문에 테스트 실행 측면에서 더 유연합니다.
JUnit은 여전히 특정 이전 / 이후 메소드가 정적이어야하므로 테스트 실행 전에 수행 할 수있는 작업이 제한됩니다. TestNG에는이 문제가 없습니다.
TBH, 통합 / 자동화 테스트에 초점을 맞추지 않는 한 두 프레임 워크의 차이점은 그다지 의미가 없습니다. 내 경험에서 얻은 JUnit은 처음부터 단위 테스트를 위해 구축되었으며 이제 더 높은 수준의 테스트로 밀려 나고 있습니다. IMO는 작업에 잘못된 도구가됩니다. TestNG는 단위 테스트에서 잘 작동하며 강력한 데이터 제공 및 뛰어난 테스트 실행 능력으로 인해 통합 / 자동화 테스트 수준에서 훨씬 더 잘 작동합니다.
이제 내가 생각하는 것은 잘 구조화되고 읽기 쉽고 유지 관리 가능한 테스트를 작성하는 방법에 대한 별도의 문제입니다. 이것의 대부분은 당신이 알고 있다고 확신하지만 Factory Pattern , Command Pattern 및 PageObjects (테스트 웹 사이트의 경우)가 중요하므로 테스트 (SUT)와 실제 테스트 사이에 추상화 계층을 갖는 것이 매우 중요합니다. (비즈니스 로직의 주장)입니다. 훨씬 더 좋은 단언을하기 위해 Hamcrest 를 사용할 수 있습니다 . 자바 상속 / 인터페이스를 사용하여 반복을 줄이고 공통성을 강화하십시오.
거의 잊고, Test Data Builder Pattern을 사용하십시오 . 이것은 TestNG의 dataprovider 주석과 결합되어 매우 유용합니다.