gpt4 book ai didi

java - JUnit parameterized Tests 获取测试后的参数

转载 作者:行者123 更新时间:2023-11-30 11:49:13 26 4
gpt4 key购买 nike

这就是我的困境。我一直在使用 Selenium、TestNG 和 iText 从自动化测试运行的结果中生成漂亮的 PDF 报告,但最近有人告诉我,他们不想要 TestNG 与 JUnit 的竞争库,并被告知开始使用 JUnit .

我正在使用参数运行这些 JUnit 测试,我想知道是否有办法在测试运行之后/期间访问参数?参数是带有浏览器名称的字符串,用于告诉 selenium 要获取哪个 WebDriver,并且很高兴知道测试在某个浏览器中通过/失败。 JUnit 似乎在测试运行完成后您可以访问的信息非常有限。

我有一个扩展 junit.framework.TestListener 的类,它监听每个测试的开始/停止,在这里我可以收集有关测试的信息。

currentTest 属于 BaseTestResult 类型,这是我编写的一个类,它只是将测试结果存储在一个列表中。

import junit.framework.AssertionFailedError;
import junit.framework.Test;
import junit.framework.TestListener;
import junit.framework.TestResult;
import utilities.reporting.BaseReporting;
import utilities.reporting.BaseTestResult;
import utilities.reporting.ResultsPerSuite;

public class BaseListener implements TestListener {

private ResultsPerSuite resultsPerSuite;
private BaseReporting baseReporter;
private BaseTestResult currentSuite;
private BaseTestResult currentTest;
private long startTime;
private long endTime;
private long suiteStartTime;
private long suiteEndTime;

public BaseListener() {
baseReporter = new BaseReporting();
resultsPerSuite = new ResultsPerSuite();
currentTest = new BaseTestResult(null, null);
}

public void startSuite(Test suite) {
suiteStartTime = System.currentTimeMillis();
currentSuite = new BaseTestResult(suite);
}

@Override
public void startTest(Test arg0) {
startTime = System.currentTimeMillis();
currentTest = new BaseTestResult(arg0);
}

@Override
public void addError(Test arg0, Throwable arg1) {
currentTest.addError(new BaseTestResult(arg0, arg1));

}

@Override
public void addFailure(Test arg0, AssertionFailedError arg1) {
currentTest.addFailed(new BaseTestResult(arg0, arg1));

}

@Override
public void endTest(Test arg0) {
endTime = System.currentTimeMillis();
currentTest.setRuntime(startTime - endTime);
// If both empty, then test passed, so add to passed results.
if (currentTest.getFailed().isEmpty()
&& currentTest.getErrors().isEmpty()) {
resultsPerSuite.addPassed(currentTest);
} else {
resultsPerSuite.addFailed(currentTest);
}
}

public void endSuite(TestResult testEventDriver) {
suiteEndTime = System.currentTimeMillis();
currentSuite.setRuntime(suiteEndTime - suiteStartTime);
resultsPerSuite.setSuite(currentSuite);

baseReporter.printToConsole(resultsPerSuite);

}

/**
* @return the allTestResults
*/
public ResultsPerSuite getAllTestResults() {
return resultsPerSuite;
}

}

最佳答案

我不确定如何在不创建您自己的 Runner 的情况下让它从 TestListener 内部简单地完成您正在寻找的事情。但是你可以用 TestRule 来处理它.

由于您似乎正在使用监听器将结果发送到外部服务,因此您可能会特别通过装配 TestWatcher 获得更好的运气。与您自己的听众交流。它可以访问本地类成员变量并可以相当容易地报告它们。

关于java - JUnit parameterized Tests 获取测试后的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8490339/

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