Citrus框架:在BeforeTest实现中输入混淆

时间:2018-01-04 13:51:00

标签: java spring citrus-framework

我从柑橘文档中采用并修改了这个例子来创建一个测试前的任务。

public class BeforeTest extends TestRunnerBeforeTestSupport {
    @Autowired
    @Qualifier("myCitrusJmsEndpointBeanId")
    private javax.jms.Queue injectedQueue;

    @Override
    public void beforeTest(TestRunner runner) {
        runner.purgeQueues(action -> action.queue(injectedQueue));
    }
}

当我开始测试时,Spring抛出异常并且认为它找不到javax.jms.Queue类型的Bean。

这是真的,限定符中的bean id是用

创建的Citrus JmsEndpoint
<citrus-jms:endpoint id="myCitrusJmsEndpointBeanId".../>

但是将JmsEndpoint bean重新定义为Queue bean是多余的。另一方面,不允许编译器将injectedQueue定义为JmsEndpoint。

显然我在这里做错了。柑橘样品中有完整的例子吗?还是其他地方?

由于

1 个答案:

答案 0 :(得分:0)

如果您不想在配置中将任何df1 = data.frame(name = c("Tom", "Shane", "Daniel", "Akira", "Jack", "Zoe"), c1 = c(1,2,3,0,5,0), c2 = c(0, 3, 5, 0,4,0), c3 = c(0, 0,1,0,0,3), c4=c(0,0,0,1,0,0)) df2 = df1[rep(1:NROW(df1), apply(df1, 1, function(x) sum(x[-(1)] > 0))),] df3 = df2 df3[-1] = df3[-1] * 0 df3[ave(1:NROW(df2), df2$name, FUN = length) == 1,] = df2[ave(1:NROW(df2), df2$name, FUN = length) == 1,] replace(x = df3, list = cbind(1:NROW(df3), 1+ave(1:NROW(df2), df2$name, FUN = seq_along)), values = df2[cbind(1:NROW(df3), 1+ave(1:NROW(df2), df2$name, FUN = seq_along))]) # name c1 c2 c3 c4 #1 Tom 1 0 0 0 #2 Shane 2 0 0 0 #2.1 Shane 0 3 0 0 #3 Daniel 3 0 0 0 #3.1 Daniel 0 5 0 0 #3.2 Daniel 0 0 1 0 #4 Akira 0 0 0 1 #5 Jack 5 0 0 0 #5.1 Jack 0 4 0 0 #6 Zoe 0 0 3 0 定义为Beans,则可以执行此操作。

Queues

请参阅文档here Java DSL runner 的部分。

修改

以下是@burki使用的解决方案的详细说明。

将队列名称配置为 citrus.properties 文件中的属性:

public class PurgeQueuesBeforeSuite extends TestRunnerBeforeSuiteSupport {

@Autowired
@Qualifier("connectionFactory")
ConnectionFactory queueConnectionFactory;

@Override
public void beforeSuite(TestRunner runner) {
    runner.purgeQueues(action ->
    action.connectionFactory(queueConnectionFactory)
            .queue("QUEUE_NAME_1")
    .queue("QUEUE_NAME_2")
    .queue("QUEUE_NAME_3"));
  }
}

然后您可以在 citrus-context.xml 中使用它们,如下所示:

my.out.queue.name=MY_OUT_QUEUE
my.in.queue.name=MY_IN_QUEUE

PurgeQueuesBeforeSuite 这样的行动中:

<citrus-jms:endpoint id="myOutQueueEndpoint"
                     destination-name="${my.out.queue.name}"
                     timeout="10000"/>