Java @Rule@Before和@After中的JUnit参数

Java @Rule@Before和@After中的JUnit参数,java,junit,junit4,citrus-framework,Java,Junit,Junit4,Citrus Framework,我需要一个关于如何在所有测试方法中实现以下代码段的建议 @Test public void testCatalogItemUpdate() { String correlationId = getCorrelation(); try { parallel().actions( //use correlationId //invoke test scenario //assert results );

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

@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组件。我不确定您是否可以在这些部分中调用柑橘测试,但您可以尝试。以下是使用before test的示例(您需要将其添加到citrus上下文文件):


${}
1.

您也可以查看CuthReS()中的模板,特别是如果您需要在测试用例中间运行该代码。

< P>我不能评论,因为我没有足够的分数,所以我试图用我的理解来给出解决方案。因此,请澄清您在参数部分添加注释的一件事,如下所示

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类

您应该扩展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"/>
公共类MyBeforeTest扩展了TestDesignerBeforeTest支持{
@凌驾
测试前公共无效(TestDesigner){
echo(“此操作应在套件之前执行”);
}
}

beforeTest方法随testdesigner实例一起提供,该实例随后能够接收Citrus中的javadsl调用。当然,您也可以将TestRunner备选方案与相应的基本TestRunnerBeforeTestSupport类一起使用。

correlationid是否始终相同?如果不是从哪里来的?测试应该在什么时候运行?之前之后在中间?这是一个测试,每个测试的准备还是测试后清理的东西?断言在哪里?目前这只是一次跑步。没有断言,这不是一个测试。我试图修改代码示例,以回答上面的所有问题。谢谢您的帖子。我相信我会检查这个谢谢你的回复。我也会看一看。目前在“@Before”和“@After”我发现它更干净
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"/>