gpt4 book ai didi

java - 从工厂注释运行时,testng eclipse 插件仅显示最后一个测试类结果

转载 作者:行者123 更新时间:2023-11-30 11:17:19 27 4
gpt4 key购买 nike

我有一个测试类,其实例是从具有不同参数的 @Factory 注释创建的。当我在 eclipse 中运行它们时,它显示输出/结果的 testNG 插件或窗口仅显示最后一次测试类运行的结果。其他测试类实例运行的其他测试结果在哪里?我的 testng.xml :

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="All Tests Suite">
<test name="factory test" group-by-instances="true">
<classes>
<class name="unitTest.TestNGTestCases.FactoryTest"></class>
</classes>
</test>
</suite>

My Factory 注释类:

package unitTest.TestNGTestCases;

import java.util.ArrayList;
import java.util.List;

import org.testng.annotations.Factory;

public class FactoryTest {
@Factory
public Object[] factory2()
{
System.out.println("running factory2");
List<TestNGTest2> list=new ArrayList<>();
for (int i = 6; i < 10; i++) {
list.add(new TestNGTest2(String.valueOf(i)));
}
return list.toArray(new Object[list.size()]);
}
}

我的测试类:

package unitTest.TestNGTestCases;

import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class TestNGTest2 {
private String str;
public TestNGTest2(String s)
{
this.str=s;
}

@BeforeClass
public void bf()
{
System.out.println("running before class "+this.str);
}
@Test(priority=1,groups="test1")
public void t1()
{
System.out.println("Running 1"+str);
}
@Test(priority=2,groups="test2")
public void t2()
{
System.out.println("Running 2"+str);
}
@Test(priority=3,groups="test3")
public void t3()
{
System.out.println("Running 3"+str);
}
@Test(priority=4,groups="test4")
public void t4()
{
System.out.println("Running 4"+str);
}
}

我还希望我的测试类实例按照它们添加到工厂列表中的顺序顺序运行。对此可以做些什么?

TIA

最佳答案

我找到了解决方案,我们需要重写 toString() 方法并每次都传递一个新的测试名称。然后我们可以看到所有的结果。像下面这样的东西:

@Override
public String toString()
{
return this.testName;
}

其中 testName 是一个字符串,它被接受为工厂测试类构造函数的参数之一。

关于java - 从工厂注释运行时,testng eclipse 插件仅显示最后一个测试类结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24424529/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com