2013-06-14 1 views
0

я могу привнести поле класса, как это:Как ввести отдельный/другой параметр для методов тестирования?

class TestClass{ 
    @Inject 
    Handler handler; 

    @Test 
    public void test1(){....} 

    @Test 
    public void test2(){....} 
} 

Но поле «обработчик» будет совместно использоваться test1() и test2(), и вызывает много вопрос для меня, так что вопрос заключается в том, чтобы ввести отдельные/разные обработчики для test1() и test2(), как это:

class TestClass{ 

    @[email protected] 
    public void test1(Handler handler){....} 

    @[email protected] 
    public void test2(Handler handler){....} 
} 

ответ

0

TestNG делает розарий, так что вы не можете добавить параметры, как это или он не будет знать, как вызвать ваши методы испытаний. Для этого вам нужно будет полагаться на вашу инфраструктуру инъекций (я предполагаю, что Guice). Вы можете убедиться, что ваш обработчик не синглтон и определить два различных поле:

@Inject 
private Handler handler1; 

@Inject 
private Handler handler2; 

Или вы могли бы использовать аннотированные инъекции, если вы хотите, чтобы определенные случаи:

@Inject 
@Handler1 
private Handler handler1; 

@Inject 
@Handler2 
private Handler handler2; 
+0

Спасибо, ваше решение не то, что я want.Right теперь, я создаю частный метод для воссоздания mocks и запускаю вызов перед каждым методом тестирования. –