junit测试在600秒后跳过

时间:2018-05-24 10:36:14

标签: java web-services junit embedded

我正在进行具有各种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();
    }
有人可以帮我一点吗?提前谢谢!

2 个答案:

答案 0 :(得分:0)

提供的测试代码段未显示任何断言/验证操作。

你有一个坐在那里的测试,等待600秒。然后它会结束。 并且测试将显示为已通过(因为它不会导致失败或错误)。

因此:

  1. 如果您的测试应在600秒后执行某些操作,则必须对其进行编码。
  2. 无关:你真的应该先退一步。单元测试应该快速通过,等待600秒不是一个好主意(假设我们在这里谈论真正的单元测试,而不是集成测试)

答案 1 :(得分:0)

最后我找到了造成这种情况的原因,我会发布它以防万一有人踩到同样的问题。

它是由于Parallelized类引起的,更具体地说是在ExecutorService awaitTermination()方法中,你可以设置超时..