У меня есть платформа автоматизации тестирования с объектной моделью страницы. Все мои тесты расположены в отдельных классах в одном пакете.TestNG не продолжает выполнять тесты после сбоя
В testng.xml я есть
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Smoke Test">
<test name="SmokeTest">
<classes>
<class name="name.test1"/>
<class name="name.test2"/>
<class name="name.test3"/>
</classes>
</test>
</suite>
Проблема заключается в том, что после запуска TestNG.xml, если первый тест потерпит неудачу, он прекратит выполнение теста. Но я хочу продолжить выполнение всех тестовых случаев.
Я использую Jenkins в своем проекте, и если один из тестов не выполнен, он немедленно прекращает выполнение.
Пример испытания
public class LoginTestTest {
public AndroidDriver<AndroidElement> driver;
public AOWebClient aoWebClient;
AOWebClient aoWeb;
public LoginTestTest(AndroidDriver<AndroidElement> driver, AOWebClient aoWeb){
this.driver = driver;
this.aoWeb = aoWeb;
PageFactory.initElements(new AppiumFieldDecorator(driver), this);
}
public LoginTestTest() {
}
SoftAssert softAssert = new SoftAssert();
@BeforeClass
public void setUp() throws Exception {
driver = DesiredCapabilitiesSetup.startAppiumServer();
aoWebClient = DesiredCapabilitiesSetup.getAOWeb();
LogIn logIn = new LogIn(driver,aoWebClient);
logIn.logIn();
}
@org.testng.annotations.Test
public void goToSettings() throws InterruptedException {
HeaderMenu header = new HeaderMenu(driver,aoWeb);
HamburgerMenuList ham = new HamburgerMenuList(driver);
header.clickHamburgerButton();
header.clickHamburgerButton();
header.editButtonClick();
softAssert.assertAll();
}
@AfterClass
public void tearDown(ITestResult result) throws Exception {
if (result.getStatus() == ITestResult.FAILURE) {
TakeScreenshot screenshot = new TakeScreenshot();
screenshot.TakeScreenshot("screenshots/");
}
LogOut logOut = new LogOut(driver,aoWeb);
logOut.logOut();
}
}
Если мой тест потерпит неудачу в @Test
он никогда не будет по-прежнему @AfterClass
метода. И я хочу, чтобы, если @Test
не удалось, он продолжит метод @AfterClass
и после этого класса продолжит выполнение теста из других классов с testng.xml
.
я узнал, что этот метод работает при запуске пакета в проекте с некоторыми тестами. Но если вы запустите Testng.xml, он все равно останавливается, даже имея alwaysRun в тестах. Когда первый тест терпит неудачу, его король замораживается при исполнении. –
Мы также пользователь Gradle, tasks.withType (Test) { scanForTestClasses = ложь включают "**/* Test.class" } тест { useTestNG { люксов testng.xml ' }} –
Еще один, который я нашел: Когда в testng.xml я указываю на запуск пакета, он запускает все тестовые классы, даже если первый из них не работает. И после этого мне показывают только неудачные тесты. Но если я укажу несколько классов вместо пакета в testng.xml, первый сбой остановит выполнение. –