这可能以某种方式从Citrus testcase中运行Citrus模拟器场景吗?
我有一个端到端的测试场景。我向输入端点发送一条消息,并从最后一个端点接收它:
<parallel>
<sequential>
<receive endpoint="...">
<message>
<resource file="..."/>
</message>
<header>
...
</header>
</receive>
</sequential>
<sequential>
<sleep seconds="10"/>
<send endpoint="...">
<message>
<resource file="..."/>
</message>
<header>
...
</header>
</send>
</sequential>
</parallel>
与此同时,我的应用程序会执行一些额外的读数。我需要模拟这些读数的回复,如果我能够在此测试用例中包含对这些读取的回复,或者在运行此测试用例的同时启动特定的Simulator场景(在测试之前无需启动其他外部Java Simulator应用程序),那将会很棒。这可能吗?
最好的问候
答案 0 :(得分:1)
让我看看我是否正确理解了您的情景:
您可以使用<parallel>
&amp; <sequential>
代码:
<parallel>
<sequential>
<!-- send initial request -->
<send ...>
<!-- receive response to the initial request -->
<receive ...>
</sequential>
<sequential>
<!-- simulate readings -->
</sequential>
</parallel>
你有两个主题。在第一个<sequential>
中,您发送启动请求(1)并等待响应(3)。
在第二个<sequential>
中,您模拟对您的读数的回复(2)。
两个线程将并行运行。 Citrus将发送请求,之后它将等待<receive>
操作的响应。只有在你完成模拟你的读数(在并行线程上)并且你的应用程序能够发送正确的响应(我推测)之后,才能得到这个响应。这意味着您需要在第一个<send>
内的<receive>
和<sequential>
之间进行休眠,或者为<receive>
操作配置足够高的超时。
我还回答了与您的older question有关Citrus和主题的问题,我猜想,这就是为什么你有两个<sequential>
与第一个<receive>
并行运行的原因。如果您的应用仅在模拟读数后发送响应,则我上面发布的设置应该有效,因为响应的速度不应该是个问题。如果速度仍然是一个问题,这样的事情应该有效:
<parallel>
<sequential>
<!-- receive response to the initial request -->
<receive ...>
</sequential>
<sequential>
<!-- send initial request -->
<send ...>
</sequential>
<sequential>
<!-- simulate readings -->
</sequential>
</parallel>
再次,不要忘记<receive>
操作的超时。
如果您需要可重复使用的测试方案,可能模板可以help you。