Java test.timeoutSecs属性容易混淆,无法提供一致的结果

Java test.timeoutSecs属性容易混淆,无法提供一致的结果,java,testing,junit,mule,Java,Testing,Junit,Mule,我已经开始为我的Mule流和处理器编写测试用例 作为其中的一部分,我尝试在setUp方法中设置mule.test.timeoutSecs属性,以确保我的每个测试方法不会占用更多的时间 但这显示出一些令人困惑的结果 我已将属性设置为3秒 第一个测试方法运行了9秒多,但仍然成功 第二种方法是3000毫秒后的timedout 第三个测试方法未能引发异常 org.mule.retry.RetryPolicyExhaustedException: Could not create Transport. R

我已经开始为我的Mule流和处理器编写测试用例

作为其中的一部分,我尝试在setUp方法中设置mule.test.timeoutSecs属性,以确保我的每个测试方法不会占用更多的时间

但这显示出一些令人困惑的结果

我已将属性设置为3秒

第一个测试方法运行了9秒多,但仍然成功

第二种方法是3000毫秒后的timedout

第三个测试方法未能引发异常

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毫秒后的timedout

如果我遗漏了什么,请告诉我

下图显示了测试摘要以及每个测试方法所用的时间


Eclipse将安装/拆卸所花费的时间包含在该测试所花费的时间中。如果您有一个@Before/@After,它将包含在测试时间中。因此,如果您有一个第一次测试需要很长时间的设置,这将包括在内

但是,超时仅适用于测试方法本身,而不适用于@Before/@After

此外,IIRC如果你有课前/课后考试,这将包括在时间内,但仅限于第一次/最后一次考试

要对此进行测试,可以在测试中添加以下行:

@Test public void testMe() {
  long now = new Date().getTime();

  // test
  System.out.println("time taken =" + (new Date().getTime() - now) + " millis");
}

这将告诉您所花费的时间是否真的在@Before/@After中。

Eclipse将安装/拆卸所花费的时间包含在该测试所花费的时间中。如果您有一个@Before/@After,它将包含在测试时间中。因此,如果您有一个第一次测试需要很长时间的设置,这将包括在内

但是,超时仅适用于测试方法本身,而不适用于@Before/@After

此外,IIRC如果你有课前/课后考试,这将包括在时间内,但仅限于第一次/最后一次考试

要对此进行测试,可以在测试中添加以下行:

@Test public void testMe() {
  long now = new Date().getTime();

  // test
  System.out.println("time taken =" + (new Date().getTime() - now) + " millis");
}

这将告诉您所花费的时间是否真的在@Before/@After中。

当使用org.mule.tck.junit4.FunctionalTestCase时,请在测试类构造函数或@BeforeClass静态方法中设置mule.test.timeoutSecs。

当使用org.mule.tck.junit4.FunctionalTestCase时,请在测试中设置mule.test.timeoutSecs类构造函数或@BeforeClass静态方法。

您的测试是否扩展org.mule.tck.junit4.FunctionalTestCase?安装程序太晚,无法设置系统属性,@BeforeClass更好。还有,为什么要处理全局测试超时,这对于测试IMO来说是一个非常奇怪的设计。通常,您在通过MuleClient进行同步交互时超时。是的,我的测试用例正在扩展FunctionalTestCase。您的测试是否扩展org.mule.tck.junit4.FunctionalTestCase?安装程序太晚,无法设置系统属性,@BeforeClass更好。还有,为什么要处理全局测试超时,这对于测试IMO来说是一个非常奇怪的设计。通常,您通过MuleClient在同步交互上超时。是的,我的测试用例正在扩展FunctionalTestCase。您能提供一个示例代码吗?我不明白如何在@beforeclass中设置mule.test.timeoutSecs属性。您能提供一个示例代码吗?我不明白如何在@BeforeClass中设置mule.test.timeoutSecs属性