gpt4 book ai didi

java - 朱尼特 : Runlistener overriden method (testFinished) not called when running a Parameterized test

转载 作者:行者123 更新时间:2023-12-01 13:42:29 29 4
gpt4 key购买 nike

我需要运行一个参数化测试,该测试按预期工作正常,但这里的问题是,在我们的框架中,我们有自己的自定义监听器类,它扩展 RunListener 并覆盖所有方法。但是当我将测试作为参数化测试运行时,没有任何方法被覆盖。但如果我运行没有参数的测试,同样可以正常工作。

下面是我的 CustomJunitListener

{
/**
* Class used to do some report regarding the JUnit event notifier
*/
public class CustomJUnitListener extends RunListener {

SeleniumTest test = null;

public void setSeleniumTest(SeleniumTest test) {
this.test = test;
}

/** {@inheritDoc} */
@Override
public void testFinished(Description description) throws Exception {
if (test != null) {
test.postExecution();
}
}



}

当我运行参数化测试时,不会调用 postExection 方法。我希望在完成测试的每组参数后调用 postExection 方法。

下面是我的 Selenium 测试

@RunWith(Parameterized.class)
public class Test_Script extends SeleniumTest{

private String testName;
private String from;
private String to;

public Test_Script(String testName , String from, String to) {
this.testName =testName;
this.from =from;
this.to =to;
}

@Test
public void scenario()throws Exception{
/* Test Script */
}

@Parameters
public static Collection<Object[]> getData() throws ParserConfigurationException, SAXException, IOException {
XMLReader reader = new XMLReader("NewFile.xml");
return reader.readXML();
}

请向我提供您对此的意见。

最佳答案

这不是使用 RunListener 的方法。 RunListener 独立于测试 - 您将其添加到正在运行测试的类(在您的情况下为参数化类),而不是您的测试本身。有关如何使用 RunListener 的示例,请参阅 How to add listener in Junit testcases .

但是,我怀疑这实际上并不是您想要的。您可能想查看 TestRules,特别是ExternalResource 类。这允许您定义可以更轻松地重用的 before() 和 after() 方法:

@Rule ExternalResource myRule = new ExternalResource() {
public void after() {
test.postExecution();
}
}

有关详细信息,请参阅JUnit wiki - Rules

关于java - 朱尼特 : Runlistener overriden method (testFinished) not called when running a Parameterized test,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20605040/

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