gpt4 book ai didi

java - TestNG 监听器 : working with XML, 因注释而失败

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:18:34 24 4
gpt4 key购买 nike

我正在尝试向我的 TestNG 测试类添加一个监听器。

监听器 MyListener 是:

package somepackage.util;
import org.testng.ITestContext;
import org.testng.TestListenerAdapter;

public class MyListener extends TestListenerAdapter {
@Override
public void onFinish(ITestContext testContent) {
System.out.println("onFinish");
}
}

对于测试类 SimpleTest 我有:

package somepackage;

import somepackage.util.MyListener;
import org.testng.Assert;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;

@Listeners({ MyListener.class })
public class SimpleTest {
@Test
public void test() {
System.out.println("Running test...");
Assert.assertTrue(true);
}
}

XML 是:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">

<suite name="SomeTests">
<listeners>
<!--listener class-name="somepackage.util.MyListener" /-->
</listeners>
<test name="SimpleTest">
<classes>
<class name="somepackage.SimpleTest" />
</classes>
</test>
</suite>

输出是(很多路径东西被剪切):

<snip>
[Parser] Running:
<snip>/test.xml
Running test...

===============================================
SomeTests
Total tests run: 1, Failures: 0, Skips: 0
===============================================

Process finished with exit code 0

当我将 XML 中的注释更改为实际元素时:

<listener class-name="somepackage.util.MyListener" />

有效:

<snip>
[Parser] Running:
<snip>/test.xml
Running test...
onFinish

===============================================
SomeTests
Total tests run: 1, Failures: 0, Skips: 0
===============================================

Process finished with exit code 0

知道为什么在 XML 工作正常时注释被忽略了吗?我可以使用 XML,但我也希望能够使用注释。

以防万一,我正在使用 IntelliJ IDEA 14 和 Java 7 运行测试。

最佳答案

问题是依赖性问题。在我的 pom.xml 中,我依赖于一些本身依赖于 TestNG 5.11 的类。在我发现我无法使用 @Listeners 注释之前,这种方法非常有效。

用命令

mvn dependency:tree

我发现我有错误的依赖项。为了摆脱它们,我不得不更改依赖于 TestNG 5.11 的工件周围的 pom.xml:

<dependency>
<groupId>some.group.id</groupId>
<artifactId>the.artifact.id</artifactId>
<vers‌​ion>1.0</version>
<exclusions>
<exclusion>
<groupId>org.testng</groupId>
<artifactId>‌​testng</artifactId>
</exclusion>
</exclusions>
</dependency>

在那之后,正确的 TestNG 依赖项工作正常,我能够使用我的监听器。

旁注:例如 when 的行为retryAnalyzers 和 Listeners 的调用在 5.11 到 6.9.6 的版本中发生了巨大变化,我想它已经发生了很多次。例如,在 STO 上有很多问题涉及“如何修复最终通过的重试测试的报告”——我发现这些方法都不适合我,所以我自己想出了一个。这与问题并不完全相关,但我只是希望您确保在修复依赖关系后仔细检查您的监听器和分析器是否按预期调用并按预期工作。

关于java - TestNG 监听器 : working with XML, 因注释而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31736428/

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