这是我的testNG测试的样子: -
public class orderTest{
@Test
public void meth1() throws InterruptedException{
System.out.println("1");
Reporter.log("1");
}
@Test
public void meth2() throws InterruptedException{
System.out.println("2");
Reporter.log("2");
}
@Test
public void meth3() throws InterruptedException{
System.out.println("3");
Reporter.log("3");
}
@Test
public void meth4() throws InterruptedException{
System.out.println("4");
Reporter.log("4");
}
}
当我在eclipse上运行时,控制台显示为: - 1 2 3 4 通过:meth1 通过:meth2 通过:meth3 通过:meth4
但是当我打开testNG报告时,点击记者输出链接,它显示为: - 记者输出 - METH1 1 meth4 4 meth3 3 meth2 2
为什么testng报告中的订单不正确? 执行顺序是1,2,3,4 但, 报告顺序为1,4,3,2。
答案 0 :(得分:1)
它也可以通过输出报告中的执行顺序显示。为此,您的TestNG Reporter应该实现IReporter。
使用它的好插件是 ReportNG 。 您可以覆盖它的 generateReport 方法,按照其父 XML 套件顺序在Html报告中显示套件,如下所示:
public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites, String outputDirectoryName) {
...
Comparator<ISuite> suiteComparator = new TestSuiteComparator(xmlSuites);
suites.sort(suiteComparator);
...
}
TestSuiteComparator 的位置如下:
public class TestSuiteComparator implements Comparator<ISuite> {
public List<String> xmlNames;
public TestSuiteComparator(List<XmlSuite> parentXmlSuites) {
for (XmlSuite parentXmlSuite : parentXmlSuites) {
List<XmlSuite> childXmlSuites = parentXmlSuite.getChildSuites();
xmlNames = new ArrayList<String>();
xmlNames.add(parentXmlSuite.getFileName());
for (XmlSuite xmlsuite : childXmlSuites) {
xmlNames.add(xmlsuite.getFileName());
}
}
}
@Override
public int compare(ISuite suite1, ISuite suite2) {
String suite1Name = suite1.getXmlSuite().getFileName();
String suite2Name = suite2.getXmlSuite().getFileName();
return xmlNames.indexOf(suite1Name) - xmlNames.indexOf(suite2Name);
}
}
答案 1 :(得分:0)
If you want the classes and methods listed in this file to be run in an unpredictible order, set the preserve-order attribute to false.
这就是TestNG文档所说的内容,所以除非拼写错误(不要说我的完美:),这就是一个功能。
但在我看来,只有报告顺序是不可预测的,执行似乎是可以预测的。
dtd说,
@attr preserve-order If true, the classes in this tag will be run in the same order as
found in the XML file.
以便与实际相符。
没错,但也许可以反过来预期。
似乎是使报告更具吸引力的功能:)