我已经开始为我的Mule流程和处理器编写测试用例。
作为其中的一部分,我尝试在“setUp”方法中设置属性“mule.test.timeoutSecs”,以确保我的每个测试方法都没有花费更多时间。
但这显示出一些令人困惑的结果。
我已将该属性设置为3秒。
第一种测试方法的运行时间超过9秒,但仍然是成功的。
第二种方法是在3000毫秒后超时。
第三种测试方法未能抛出异常
org.mule.retry.RetryPolicyExhaustedException: Could not create Transport. Reason: javax.management.InstanceAlreadyExistsException: org.apache.activemq:BrokerName=localhost,Type=Broker
at org.mule.retry.policies.AbstractPolicyTemplate.execute(AbstractPolicyTemplate.java:105)
.....
Caused by: javax.jms.JMSException: Could not create Transport. Reason: javax.management.InstanceAlreadyExistsException:
第四种方法是在3000毫秒后超时。
请告知我在这里遗失了什么。
下图显示了测试摘要以及每种测试方法的时间。
答案 0 :(得分:3)
使用org.mule.tck.junit4.FunctionalTestCase
时,在测试类构造函数或mule.test.timeoutSecs
静态方法中设置@BeforeClass
。
答案 1 :(得分:1)
Eclipse包括在该测试中花费在设置/拆卸上花费的时间。如果您有@Before
/ @After
,它将包含在测试时间内。因此,如果您的设置需要很长时间才能进行第一次测试,那么这将包括在内。
但是,超时仅适用于测试方法本身,而不适用于@Before
/ @After
。
此外,IIRC如果您有BeforeClass
/ AfterClass
这将包括在时间中(但仅限于第一次/最后一次测试)。
要测试这一点,在测试中,您可以添加以下行:
@Test public void testMe() {
long now = new Date().getTime();
// test
System.out.println("time taken =" + (new Date().getTime() - now) + " millis");
}
这会告诉您花费的时间是否真的在@Before
/ @After
。