所以這是我的困境。我一直在使用Selenium,TestNG和iText從自動化測試運行的結果中生成漂亮的PDF報告,但最近我被告知他們不希望競爭庫TestNG與JUnit競爭,並被告知開始使用JUnit 。JUnit參數化測試在測試後獲取參數
我正在運行這些JUnit測試的參數,我想知道有沒有辦法在測試運行後/期間訪問參數?參數是帶有瀏覽器名稱的字符串,用於告訴Selen 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;
}
}
我無法幫助您解決您的問題,但我讚賞您使用這些工具。 –
大聲笑,謝謝,一點鼓勵總是讚賞。 = P –
這很奇怪。爲什麼使用TestListener,它是JUnit 3,而不是RunListener,它是JUnit 4?您有使用JUnit 3的原因嗎?這意味着你無法訪問JUnit 4中的所有新東西。 –