2014-01-16 2 views
0

Я использую TestNG для запуска пакета, который содержит около 20 тестовых классов, мой файл XML, как этоTestNG пропустил занятия один раз один тестовый класс провален

<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 
<suite name="PageTest" parallel="classes" thread-count="5"> 
    <packages> 
     <package name="testpagename"/>   
    </packages> 
</test>  
</suite> 

и мои тестовые классы определены как

public class testdemo { 
    @BeforeClass  
    public void setUpClass(){  

    } 
    @AfterClass 
    public void afterClass(){ 
    } 

    @Test 
    public void testMethod1(){ 
    } 

    @Test(dependsOnMethods = {"testMethod1"}) 
    public void testMethod2(){ 
    } 

} 

Пока тест запущен, по какой-либо причине один из тестовых классов не работает из-за неожиданного исключения, я ожидаю, что следующие тестовые классы будут выполняться до тех пор, пока все классы не будут выполнены. Но действительно, остальные классы пропускаются из-за сбоя, может ли кто-нибудь показать мне, как это исправить?

Благодаря

+0

Все классы не будут пропущены, должны быть пропущены только зависимые методы. Существует ли связь между этим классом и другими классами или это полностью независимые классы? –

ответ

0

Положите полный код в блок попробовать и использовать поймать блок, чтобы сделать его из строя в результате Assert заявление. Поэтому следующий метод TestNG не пострадает от предыдущего отказа.

@Test 
Public void method1(){ 
try{ 
// Here will ur code which may cause exception 
} 
Catch(Exception e){ 
    Assert.fail(" "); 
} 
} 
@Test 
Public void method2{ 
// implement in same way as method 1 

} 
0

Я думаю, что все последующие классы будут пропущены в случае сбоя метода @ Before *. Попробуйте использовать атрибут configfailurepolicy = "continue" в определении вашего пакета.

+0

Привет, Да, я думаю, вы правы. но как только я добавлю configfailurepolicy = «продолжить» к определению пакета, как только аннотация @beforeclass не удалась, он будет запускать тесты без зависимости в дочерних классах, как ожидается? – user3204645

+0

@ пользователь3204645 пожалуйста, перефразируйте вопрос. Что такое тесты без зависимости? Что такое детские классы? Какой-то пример на примере действительно поможет ... – user1058106

0

Указано в документации TestNG, что мы можем создать зависимости двумя способами:

зависимостей 1.Hard. Все методы, от которых вы зависите, должны выполняться и выполняться для вас. Если в ваших зависимостях произошел хотя бы один сбой, вы не будете вызываться и отмечены как SKIP в отчете.

2. Плохие зависимости. Это тот, который вы попросили. Вы всегда будете запускаться после методов, от которых вы зависите, даже если некоторые из них потерпели неудачу. Это полезно, когда вы просто хотите убедиться, что ваши тестовые методы выполняются в определенном порядке, но их успех не зависит от успеха других. Мягкая зависимость получается путем добавления «alwaysRun = true» в аннотации @Test.

@Test(dependsOnMethods = {"testMethod1"},alwaysRun=true) 
public void testMethod2(){ 
} 
Смежные вопросы