我从柑橘文档中采用并修改了这个例子来创建一个测试前的任务。
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。
显然我在这里做错了。柑橘样品中有完整的例子吗?还是其他地方?
由于
答案 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"/>