2013-12-16 4 views
0

У меня есть требование запуска параметризованного теста, который работает нормально, как и ожидалось, но проблема здесь: в нашей структуре у нас есть собственный пользовательский класс слушателя который расширяет RunListener и отменяет все методы. но ни один из методов не переоценивается, когда я запускаю тест в качестве параметризованного теста. но то же самое работает отлично, если я запускаю тест без параметров.Junit: метод переопределения Runlistener (testFinished), который не вызывается при запуске параметризованного теста

ниже мой CustomJunitListener

{ 
/** 
* Class used to do some report regarding the JUnit event notifier 
*/ 
public class CustomJUnitListener extends RunListener { 

    SeleniumTest test = null; 

    public void setSeleniumTest(SeleniumTest test) { 
    this.test = test; 
    } 

    /** {@inheritDoc} */ 
    @Override 
    public void testFinished(Description description) throws Exception { 
    if (test != null) { 
     test.postExecution(); 
    } 
    } 



} 

метод postExection не вызывается, когда я запустить paramterized тест. Я хочу, чтобы метод postExection вызывался после завершения каждого набора параметров для теста.

Ниже мой Селен тест

@RunWith(Parameterized.class) 
public class Test_Script extends SeleniumTest{ 

    private String testName; 
    private String from; 
    private String to; 

    public Test_Script(String testName , String from, String to) { 
    this.testName =testName; 
    this.from =from; 
    this.to =to; 
    } 

    @Test 
    public void scenario()throws Exception{ 
    /* Test Script */ 
    } 

    @Parameters 
    public static Collection<Object[]> getData() throws ParserConfigurationException, SAXException, IOException { 
    XMLReader reader = new XMLReader("NewFile.xml"); 
    return reader.readXML(); 
    } 

Пожалуйста, предоставьте мне ваши материалы по этому вопросу.

ответ

1

Это не способ использования RunListener. RunListener не зависит от теста - вы добавляете его в класс, который запускает ваш тест (в вашем случае класс Parameterized), а не сам тест. Пример использования RunListener см. В разделе How to add listener in Junit testcases.

Однако я подозреваю, что это не то, что вы хотите. Вероятно, вы захотите взглянуть на TestRules, в частности на класс ExternalResource. Это позволяет вам определить, прежде чем() и после() метод, который вы можете повторно использовать более легко:

@Rule ExternalResource myRule = new ExternalResource() { 
    public void after() { 
     test.postExecution(); 
    } 
} 

Для получения дополнительной информации см JUnit wiki - Rules

+0

Во-первых, большое спасибо за ваши входы, я действительно apreciate ваш непосредственный ответ, он решил мою проблему. Также, как и мы сказали, что наш Runlistener не зависит от теста, я просто опубликовал в своем комментарии для лучшего понимания – Vigneshwaran

 Смежные вопросы

  • Нет связанных вопросов^_^