0

我需要关于如何在所有测试方法中实现以下代码段的建议。

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

    } finally {
        print(correlationId);
    }
}

我读到了@Rule 和@Before 和@After 注释。

4

3 回答 3

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);
}
于 2017-02-08T10:05:01.440 回答
0

您可以在 Citrus 中使用 BeforeTestSupport 类

您应该扩展 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 方法与测试设计器实例一起提供,然后它能够​​接收 Citrus 中的 Java DSL 调用。当然,您也可以将测试运行器替代方案与相应的基本 TestRunnerBeforeTestSupport 类一起使用。

于 2017-02-08T21:17:28.447 回答
0

如果您需要在测试开始或结束时执行这些操作,您可以尝试使用这些 BeforeTest 或 AfterTest 组件。我不确定您是否可以在这些部分中调用 Citrus 测试,但您可以尝试。这是一个使用前测试的示例(您需要将其添加到 citrus-context 文件中):

<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>

您还可以查看 Citrus 中的模板 ( http://www.citrusframework.org/reference/html/templates.html ),尤其是当您需要在测试用例中间运行该代码时。

于 2017-02-07T13:10:07.567 回答