각기 다른 방식으로 구현되는 두 개의 클래스가 있지만 테스트는 모두 동일합니다. 각 클래스는 병렬로 실행되는 경우 다른 클래스에 영향을 줄 수있는 몇 가지 작업을 수행하므로 병렬로 실행할 수 없습니다. (아래 코드의 이유)TestNG에서 그룹 순서를 유지하는 방법
두 클래스를 실행하는 경우 Eclipse에서 TestNG 테스트로 먼저 ClassAAA 테스트의 test1 및 test2를 실행 한 다음 동일한 테스트를 실행해야합니다. ClassBBB의 그룹 주석은 ClassAAA의 주석에 의존하기 때문에 ClassBBB에 대한 메소드가 필요합니다.
그러나 겉으로보기에는 TestNG가 다른 방식으로보고 있으며, "겉으로보기에", 그룹 순서를 무시하고 두 클론의 테스트를 병렬로 실행한다는 것입니다.
class Both {
@Test(groups={"base"})
public static abstract class BothBase {
@Test public void test1() { System.out.println("test1"+name()); }
@Test public void test2() { System.out.println("test2"+name()); }
protected String name() {
String s = getClass().getName();
s = s.substring(1 + s.lastIndexOf("$"));
return " - " + s;
}
}
@Test(groups={"gr1"})
public static class ClassAAA extends BothBase { }
@Test(groups={"gr2"},dependsOnGroups={"gr1"})
public static class ClassBBB extends BothBase { }
}
출력은 "힘"을 시도하는 내가 좋아하지 않는
test1 - ClassAAA
test1 - ClassBBB
test2 - ClassAAA
test2 - ClassBBB
한 가지 방법은, 그것이 원하는 그룹 순서를 존중하기에 더미 시험 방법을 추가하는 것입니다
@Test(groups={"gr1"})
public static class ClassAAA extends BothBase {
@Test public void dummyTestMustBeInAllLeavesToEnforceGroupOrder() {
System.out.println("dummyTestMustBeInAllLeavesToEnforceGroupOrder"+name());
}
}
@Test(groups={"gr2"},dependsOnGroups={"gr1"})
public static class ClassBBB extends BothBase {
@Test public void dummyTestMustBeInAllLeavesToEnforceGroupOrder() {
System.out.println("dummyTestMustBeInAllLeavesToEnforceGroupOrder"+name());
}
}
이것은 여전히 예상 한대로 완전하게 수행되지 않습니다. 출력은 다음과 같습니다.
test1 - ClassAAA
test2 - ClassAAA
test2 - ClassBBB
dummyTestMustBeInAllLeavesToEnforceGroupOrder - ClassAAA
test1 - ClassBBB
dummyTestMustBeInAllLeavesToEnforceGroupOrder - ClassBBB
이것은 ClassAAA 테스트를 완료하기 전에 ClassBBB 테스트를 실행하기 시작했음을 의미합니다.
나는 각각에 더미/비 관련 메소드를 추가해야만 TestNG가 병렬로 실행할 수 없다는 것을 이해할 수 없다는 사실을 좋아하지 않는다. 실제로 어떤 클래스가 먼저 실행되는지 신경 쓰지 않아요. 그리고 저는 여전히 그들이 병렬로 실행되기 때문에 제가 원하는 것을 성취하지 못했습니다.
내 목표를 달성 할 수있는 가장 바보 같은 방법은 기본 클래스에서 각 리프 클래스로 테스트를 이동하는 것입니다. TestNG에서 이러한 작업을 수행하는 방법은 무엇입니까?
다른 방법이 있습니까? 누군가가 우선 순위를 제안 할 것이라고 확신합니다. 그러나 다시 말해, 진정한 의도를 전달하지 않습니다. 우선 순위가 없습니다. 단지 병렬로 실행하지 않기를 바랍니다. 또한 XML 파일을 작성하고 싶지 않습니다 ...
어떻게 이클립스에서 실행합니까? 내가 (실행 구성에서 ...) 그룹 단추를 선택했지만 어떤 그룹을 입력 한 다음 실행하면 항상 0 개의 테스트가 실행됩니다. – inor
클래스를 파일을 분리하여 public으로 다시 이동합니다. –