我目前遇到了问题。我创建了2个类,一个是抽象的,另一个是从第一个继承的:
public abstract class A {
@BeforeClass
protected void setUp() {
Object o = new Object();
}
@AfterClass
protected void tearDown() {
o = null;
}
@Test
public void T1() {
// whatever is done here
}
@Test(dependsOnMethod={"T1"})
public void T2() {
// whatever is done here
}
}
@Test(singleThreaded=true)
public class B extends A {
@Test(dependsOnMethod={"T2"})
public void T3() {
System.out.println(o.toString());
}
}
实际上,Eclipse和Eclipse之间有两种不同的行为。詹金斯。
当我在Eclipse下运行我的测试时,执行顺序是:
setUp()
T1()
T2()
T3()
tearDown()
但在詹金斯的领导下,执行顺序是:
setUp()
T1()
T2()
tearDown()
T3()
结果,在第二种情况下,T3()明显失败,由于NullPointerException,因为Object o已被tearDown()方法销毁。 Jenkins通过使用maven-surefire-plugin,通过指定testng.xml文件来调用TestNG。这是:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="TestSuite" parallel="classes" thread-count="1" verbose="1">
<test name="Test B">
<classes>
<class name="main.pkg.B" />
</classes>
</test>
</suite>
有没有办法同时制作Jenkins&amp; Eclipse有相同的行为吗? 如果是这样,任何帮助将非常感激。
此致
塞德里克
答案 0 :(得分:0)
可能是eclipse中的testng插件版本与项目中的版本不同。
当你使用maven通过jenkins运行时,它会使用你的pom中的testng依赖项。而在eclipse中你可能已经配置了一些用于eclipse运行的其他testng插件版本。
我在pom中有6.5.1作为testng依赖版本,在插件版本中有6.5.2,我得到了两者的正确输出。我之前将testng 6.2.1作为我的maven依赖,我可以看到你看到的问题。因此,匹配两个版本可能会有所帮助。