2017-11-04 1 views
0

Gradle 및 TestNG/JUnit을 사용하여 일종의 스트레스 테스트를 구현하고 싶습니다.TestNG 테스트를 여러 번 실행합니다.

JUnit에서 완벽하게 작동하는 https://stackoverflow.com/a/41650455이 발견되었지만 TestNG에서는 작동하지 않습니다. 내가 gradlew stressTestJUnit을 실행하면

https://github.com/dhardtke/gradle-testng-stresstest

내가 제대로

JUnitTests > testNothing STANDARD_ERROR 
    I am a JUnit test! 

JUnitTests > testNothing STANDARD_ERROR 
    I am a JUnit test! 

JUnitTests > testNothing STANDARD_ERROR 
    I am a JUnit test! 

JUnitTests > testNothing STANDARD_ERROR 
    I am a JUnit test! 

JUnitTests > testNothing STANDARD_ERROR 
    I am a JUnit test! 

을받을 수 있지만 gradlew stressTestTestNG을 실행할 때 난 단지가 나타납니다 : 나는 내 문제를 보여주기 위해 작은 REPO을 만들어 이미

Gradle suite > Gradle test > TestNGTests.testNothing STANDARD_ERROR 
    I am a TestNG test! 

I을 JUnit 테스트 대신 TestNG 테스트를 실행할 때 Gradle이 다르게 수행하는 방법을 알아 내려고했지만 시도 할 수 없었습니다 (아직) :

build.gradle가 :

task testNG(type: StressTest) { 
    useTestNG() { 
     options.listeners << "core.test.TestNgStressTestListener" 
     environment "times", times 
     environment "stressTest", true 
    } 
} 

TestNgStressTestListener 클래스 :

@Override 
public void alter(final List<XmlSuite> suites) { 
    final boolean stressTest = Boolean.parseBoolean(System.getenv("stressTest")); 

    if (stressTest) { 
     final int times = Integer.parseInt(System.getenv("times")); 

     final XmlSuite base = suites.get(0); 
     suites.clear(); 
     final String baseName = base.getName(); 

     for (int i = 0; i < times; i++) { 
      final XmlSuite copy = (XmlSuite) base.clone(); 
      copy.setName(String.format("%s (%d)", baseName, i + 1)); 

      suites.add(copy); 
     } 
    } 
} 

주어진 청취자 그냥 중복 https://github.com/gradle/gradle/tree/master/subprojects/testing-jvm/src/main/java/org/gradle/api/internal/tasks/testing/testng

답변

0

나는 마지막으로이 작업을 수행하는 방법을 발견 처음에는 XmlSuite이고 이름이 바뀝니다 (그렇지 않으면 Exception이 TestNG에 Throw됩니다).

매력처럼 작동합니다!

관련 문제