Java junit测试在600秒后跳过

Java junit测试在600秒后跳过,java,web-services,junit,embedded,Java,Web Services,Junit,Embedded,我正在进行物联网设备的系统测试,该设备具有各种Web服务 我们有两种类型,一种是慢闪存,另一种是快闪存。在新闪存中,fw更新可以使用aprox完成。4分钟,而慢的大约需要12分钟 问题出现在junit测试中,该测试测试更新并返回到“先前”版本。将文件和更新信号发送到设备后,我使用Thread.sleep(6*60*1000)等待设备展开文件、更新并重新启动 junit测试在通过600秒后“跳过”测试,不是失败,不是错误,只是跳到下一个测试类 测试代码的一小部分,尽管它基本上是正确的: pub

我正在进行物联网设备的系统测试,该设备具有各种Web服务

我们有两种类型,一种是慢闪存,另一种是快闪存。在新闪存中,fw更新可以使用aprox完成。4分钟,而慢的大约需要12分钟

问题出现在junit测试中,该测试测试更新并返回到“先前”版本。将文件和更新信号发送到设备后,我使用Thread.sleep(6*60*1000)等待设备展开文件、更新并重新启动

junit测试在通过600秒后“跳过”测试,不是失败,不是错误,只是跳到下一个测试类

测试代码的一小部分,尽管它基本上是正确的:

 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();
    }

谁能帮我一点忙吗?提前谢谢

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

你有一个测试,在那里等待600秒。然后就结束了。 测试将显示为通过(因为它没有导致失败或错误)

因此:

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

  • 最后,我找到了导致这个问题的原因,我将发布它,以防有人在同一个问题上跺脚


    这是由并行化类引起的,更具体地说是在ExecutorService awaitTermination()方法中,您可以在该方法中设置超时

    请阅读并相应地强化您的问题。当你仅仅描述代码时,我们无法帮助代码不起作用……感谢你花时间@GhostCat,我没有包括它,因为它非常合适,但我会尝试包括更多,所以它更容易理解,这就是“最小”的含义。您不必提供产品代码。这只是一个说明问题的例子!我包括了一张eclipse在600秒后达到的状态的图片,测试包计数为已完成,并进入下一个包。很抱歉问题的格式不好。再次感谢您的时间,延迟后还有一些操作要做,但即使我在延迟后放置断点,它也永远不会到达,因为测试跳过,我甚至尝试将延迟分割为60秒并打印一些内容,但它无法完成整个过程delay@armengedon根据你的意见,这就是我在这里能做的一切。再说一遍:这就是为什么我要你给我一个电话。你想给我们一个完整的例子来说明你的问题。