首先,我不认为这是this issue。
无论如何,这在我运行actualTest时起作用:
public class Foo {
@BeforeGroups("Group1")
public static void doThisFirst() {
System.out.println("first");
}
@Test(groups="Group1")
public void actualTest() {
System.out.println("test");
}
}
打印“先”然后“测试”。这也适用:
public class Foo {
@BeforeGroups("Group1")
public static void doThisFirst() {
System.out.println("first");
}
public class Bar extends Foo {
@Test(groups="Group1")
public void actualTest() {
System.out.println("test");
}
}
}
但这是行不通的,只在我运行actualTest时打印“ test”:
public class Foo {
@BeforeGroups("Group1")
public static void doThisFirst() {
System.out.println("first");
}
public class Bar {
@Test(groups="Group1")
public void actualTest() {
System.out.println("test");
}
}
}
要运行,BeforeGroups批注是否必须在类中或超类中?我没有在doc中看到任何关于此的信息。我在Google周围搜索,上面的链接是我找到的最近的东西。有人知道我在想什么吗?
我也尝试过
@BeforeGroups(groups="Group1")
变体。行为相同。通常,我会从一个套件中运行该组(通常是从maven-surefire-plugin,有时是使用TestNG插件从eclipse中运行),但是当我寻找具体问题时,我尝试运行单个测试(几乎总是从eclipse中运行) ),以便更快地进行迭代。
我还应该说我有一种解决方法。我有一个具有所有BeforeGroups和AfterGroups方法的类,然后将其扩展到需要这些方法的任何类。但似乎TestNG应该能够为我做簿记。
最佳答案
您的问题是关于测试的问题。如果您从例如进行测试IDEA,它将生成以下xml:
<suite name="Default Suite">
<test name="testngex">
<classes>
<class name="Foo$Bar">
<methods>
<include name="actualTest"/>
</methods>
</class>
</classes>
</test>
</suite>
如您所见,没有有关您的@Before方法的信息。要使其工作,您需要具有以下xml:
<suite name="Default Suite">
<test name="testngex">
<packages>
<package name="path.to.foo.class"/>
</packages>
</test>
</suite>
这样您将获得预期的结果。无论如何用@Before和@After扩展BaseTestClass是更好的解决方案。
关于java - 除非在父类或本地类中,否则不会调用TestNG BeforeGroups,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36611728/