我正在进行具有各种Web服务的物联网设备的系统测试。
我们有两种类型,一种是慢速闪存,另一种是闪存速度更快。在新的flash中,fw更新可以通过aprox完成。 4分钟,而缓慢的约12分钟。
问题出现在junit测试中,测试更新并返回到先前的"版。在将文件和更新信号发送到设备后,我使用Thread.sleep(6 * 60 * 1000)等待设备扩展文件,更新并重新启动。
junit测试"跳过" 600s过后的测试,不是失败,不是错误,只是跳到下一个测试类..
It looks like it finished, but it just skipped the rest of the test WHILE it is inside the sleep
测试代码的一小段内容虽然主要是支持性的:
public RequestCase(String path, WebServiceRequest req, WebServiceResponse resExp, String tcDesc, boolean validateResXSD) {
//super();
this.setPath(path);
this.setReq(req);
this.setResExp(resExp);
this.res = new WebServiceResponse();
this.setTcDesc(tcDesc);
this.setValidateResXSD(validateResXSD);
}
和测试片段:
// now apply Software
String s06Req = null;
try {
s06Req = WebServiceRequestS06.makeCommandPsu(updFile.getRevision(), WebServiceRequestS06.SW_UPD);
} catch (WebServiceXMLException e) {
fail("Error creating S06 XML request. Error is: "+e.getMessage()+"\nAnd cause is :"+e.getCause());
}
RequestCase s06CommandPsu = new RequestCase(
null,
new WebServiceRequest("commandPsu", "POST", s06Req),
WebServiceResponse.RESULT_STATUS_CMD_SW_RECEIVED,
"Apply valid SW, and it is only received, but not apply now (imply Y03)",
true
);
executeCase(s06CommandPsu, WebServicesXSDValidator.S06_CommandPsu);
// Wait some time to wait charger apply new SW and reboot
try {
if (this.charger.getProductType() == Charger.ID_CT1_OLD_FLASH) {
Thread.sleep(6*60*1000);
} else {
Thread.sleep(2*60*1000);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
有人可以帮我一点吗?提前谢谢!
答案 0 :(得分:0)
提供的测试代码段未显示任何断言/验证操作。
你有一个坐在那里的测试,等待600秒。然后它会结束。 并且测试将显示为已通过(因为它不会导致失败或错误)。
因此:
答案 1 :(得分:0)
最后我找到了造成这种情况的原因,我会发布它以防万一有人踩到同样的问题。
它是由于Parallelized类引起的,更具体地说是在ExecutorService awaitTermination()方法中,你可以设置超时..