2017-02-07 8 views
0

Мне нужен совет о том, как следующий фрагмент может быть реализован во всех методах тестирования.Параметр JUnit в @Rule @Before и @After

@Test 
public void testCatalogItemUpdate() { 
    String correlationId = getCorrelation(); 
    try { 
     parallel().actions( 
     //use correlationId 
     //invoke test scenario 
     //assert results 
    ); 

    } finally { 
     print(correlationId); 
    } 
} 

Я прочитал о @Rule и @Before и @ После аннотаций.

+0

будет ли коррелировать всегда одинаковым? если не оттуда, откуда она взялась? –

+0

, если ваш тест должен работать? до ? после ? в середине ? – otonglet

+0

- это тест, подготовка к каждому тесту или что-то для очистки после вашего теста? – Rhayene

ответ

0

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

parallel().action(/*test scenario and assert results are here*/); 

Любые конкретные причины для этого?

Это код фрагмента. Пожалуйста, проверьте, если это помогает

private String correlationId; 
@Before 
public void beforeEachTest(){ 
    correlationId = getCorrelation(); 
    parallel().actions(correlationId); 
} 

@Test 
public void testCatalogItemUpdate(){ 
    //Execute test scenario using correlationId 
    //Assert results 
} 

@After 
public void afterEachTest(){ 
    print(correlationId); 
} 
+0

Спасибо за сообщение. Я верю, что проверю это – user3499805

0

Если вам необходимо выполнить эти действия либо в начале теста, либо в конце его, вы можете попытаться использовать эти компоненты BeforeTest или AfterTest. Я не уверен, можно ли вызывать тесты Citrus в этих разделах, но вы можете попробовать. Вот пример использования перед испытанием (вам нужно добавить его к цитрусовым контекста файла):

<citrus:before-test id="defaultBeforeTest"> 
    <citrus:actions> 
     <citrus-test:java class="<class path and class name to be here" > 
      <citrus-test:method name="<method name>" > 
       <citrus-test:argument>${<if any variable should be passed>}</citrus-test:argument> 
       <citrus-test:argument>1</citrus-test:argument> 
      </citrus-test:method> 
     </citrus-test:java> 
     <!-- access to Citrus method --> 
     <citrus-test:purge-channel> 
      <citrus-test:channel name="<server_name>.inbound"/> 
     </citrus-test:purge-channel> 
    </citrus:actions> 
</citrus:before-test> 

Вы также можете посмотреть на шаблонах в цитрусовых (http://www.citrusframework.org/reference/html/templates.html), особенно если вам нужно запустить этот код в середине вашего теста.

0

Вы можете использовать классы BeforeTestSupport в Citrus

Вы должны расширить классы BeforeTestSupport и добавить их в контексте Spring приложения:

public class MyBeforeTest extends TestDesignerBeforeTestSupport { 
    @Override 
    public void beforeTest(TestDesigner designer) { 
     designer.echo("This action should be executed before suite"); 
    } 
} 

<bean id="myBeforeTest" class="my.company.citrus.MyBeforeTest"/> 

Метод beforeTest является снабженный экземпляром тестового дизайнера, который затем способен принимать вызовы Java DSL в Citrus. Конечно, вы также можете использовать альтернативу тестового прогона с соответствующим базовым классом TestRunnerBeforeTestSupport.

+0

Спасибо за ответ. Я также посмотрю на них. В настоящее время «@Before» и «@After» я нахожу его более чистым решением – user3499805

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