@Rule @Before 和@After 中的 JUnit 参数
JUnit parameter in @Rule @Before and @After
我需要有关如何在所有测试方法中实施以下代码段的建议。
@Test
public void testCatalogItemUpdate() {
String correlationId = getCorrelation();
try {
parallel().actions(
//use correlationId
//invoke test scenario
//assert results
);
} finally {
print(correlationId);
}
}
我阅读了有关@Rule 和@Before 以及@After 注释的内容。
如果您需要在测试开始或结束时执行这些操作,您可以尝试使用那些 BeforeTest 或 AfterTest 组件。我不确定您是否可以在这些部分中调用 Citrus 测试,但您可以尝试。下面是 before test 的用法示例(您需要将其添加到 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),尤其是当您需要 运行 测试用例中间的代码时。
我无法发表评论,因为我没有足够的分数,所以我试图根据我的理解给出解决方案。因此,请澄清一件事,您在参数部分添加了注释,如下所示
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);
}
您可以在 Citrus
中使用 BeforeTestSupport classes
您应该扩展 BeforeTestSupport classes 并将它们添加到 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 class.
一起使用
我需要有关如何在所有测试方法中实施以下代码段的建议。
@Test
public void testCatalogItemUpdate() {
String correlationId = getCorrelation();
try {
parallel().actions(
//use correlationId
//invoke test scenario
//assert results
);
} finally {
print(correlationId);
}
}
我阅读了有关@Rule 和@Before 以及@After 注释的内容。
如果您需要在测试开始或结束时执行这些操作,您可以尝试使用那些 BeforeTest 或 AfterTest 组件。我不确定您是否可以在这些部分中调用 Citrus 测试,但您可以尝试。下面是 before test 的用法示例(您需要将其添加到 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),尤其是当您需要 运行 测试用例中间的代码时。
我无法发表评论,因为我没有足够的分数,所以我试图根据我的理解给出解决方案。因此,请澄清一件事,您在参数部分添加了注释,如下所示
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);
}
您可以在 Citrus
中使用 BeforeTestSupport classes您应该扩展 BeforeTestSupport classes 并将它们添加到 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 class.
一起使用