Итак, вот моя дилемма. Я использовал Selenium, TestNG и iText для создания хороших отчетов в формате PDF по результатам автоматического запуска теста, но недавно мне сказали, что они не хотят конкурировать с библиотеками TestNG и JUnit, и мне сказали вместо этого начать использовать JUnit ,
Я запускаю эти тесты JUnit с параметрами, и мне интересно, есть ли способ получить доступ к параметру после / во время выполнения теста? Параметры - это строки с именами браузеров, которые используются для указания селену, какой 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;
}
}