Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ping java函数的结果_Java_Multithreading - Fatal编程技术网

ping java函数的结果

ping java函数的结果,java,multithreading,Java,Multithreading,我有一个函数,可以删除一些对象。这可能需要一段时间,比如半小时,我想检查它是否被成功删除 @Test public void successfulThingDelete(){ Thing thing = new Thing(); deleteThing(thing); if (thing.getStatus() == 'deleted'){ pass } else { fail } 我希望能够持续地检查对象的状态(

我有一个函数,可以删除一些对象。这可能需要一段时间,比如半小时,我想检查它是否被成功删除

@Test
public void successfulThingDelete(){
    Thing thing = new Thing();
    deleteThing(thing);
    if (thing.getStatus() == 'deleted'){
        pass
    }
    else {
        fail
    }

我希望能够持续地检查对象的状态(即thing.getStatus()),并在删除时通过测试。但是如果某个时间过去了,并且没有删除,那么代码就失败了,应该失败。我假设我需要为这个状态ping引入一个新线程,但我不确定如何在这个方法中添加它。谢谢你的帮助

我猜这是一个Junit测试。测试注释允许使用格式为“…@Test(timeout=1000)…”的超时属性-该值以毫秒为单位。因此,计算30分钟内的毫秒数——1800000,然后使用它。如果Junit没有在这段时间内完成,它将无法通过测试

    @Test(timeout=1800000)
public void successfulThingDelete(){...
如果测试运行并在时间限制之前完成,那么通常的编码断言就会发生,测试也会结束。如果测试操作需要更长的时间,那么Junit将中断任何正在运行的操作,并使整个测试失败。 Ref-

我会选择。有了它,您可以编写如下测试

@Test
public void updatesCustomerStatus() throws Exception {
    // Publish an asynchronous event:
    publishEvent(updateCustomerStatusEvent);
    // Awaitility lets you wait until the asynchronous operation completes:
    await().atMost(5, SECONDS).until(customerStatusIsUpdated());
    ...
}

当然,这不会像你原来的帖子所说的那样持续测试,但我认为它实现了你的目标。读取“…deleteThing(thing)…”的代码会在工作时等待吗?或者该方法会在其他进程实际执行“delete ing”时完成吗?但是如果删除很快发生,我仍然需要花费30分钟进行测试。有了这个,如果删除很快发生-也就是说deleteThing(thing)调用完成-那么if-then将立即检查状态,那么我必须让时钟耗尽。整个过程将在那时完成,而不是在三十分钟内。我必须问清楚——当方法deleteThing(…)完成时——这个过程也完成了吗?还是有其他的繁衍过程在幕后发生?后一种情况需要类似Chris311所说的异步处理。但是如果deleteThing(…)方法没有更多的事情要做,那么您就可以检查状态了。这对于我需要测试的许多异步任务来说似乎很有用。阅读这样一个函数是一个很大的改进,它超越了通过循环检查状态和重新检查直到timesup。