Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.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
Java JUnit是一种具有while循环和异步特性的方法_Java_Spring Boot_Unit Testing_Junit_Mocking_Code Coverage - Fatal编程技术网

Java JUnit是一种具有while循环和异步特性的方法

Java JUnit是一种具有while循环和异步特性的方法,java,spring-boot,unit-testing,junit,mocking,code-coverage,Java,Spring Boot,Unit Testing,Junit,Mocking,Code Coverage,我在测试以下方法时遇到问题: public class SomeClass { public void methodForTesting() { new Thread(() -> { SomeClass.stopSomething(); while(SomeClass.getSomethingState() != SomethingState.DONE) { TimeUnit.

我在测试以下方法时遇到问题:

public class SomeClass {

  
    public void methodForTesting() {

        new Thread(() -> {
            SomeClass.stopSomething();
            while(SomeClass.getSomethingState() != SomethingState.DONE) {
                TimeUnit.sleep(5);
            }
            SomeClass.startSomething();
        });
    }
前面带有SomeClass的方法是在没有添加此项的情况下编写的,但我在这里编写它是为了表明它们是此类的一部分。 我不知道如何使用这个方法,而这个while循环正在困扰着我。

要测试这个方法,你必须深入(Power-)一点

正常情况(
SomeClass.getSomethingState()==SomethingState.DONE
或其他情况)应易于测试:

您需要验证是否已调用了
SomeClass.stopSomething()
SomeClass.getSomethingState()
SomeClass.startSomething()

对于异常情况(要达到),您可以指示/mock执行任何(-/no)操作,并返回您需要的内容(对于任何(也是外部的)类/对象):

例如,在
SomeClass.getSomethingState()
上,也在
Thread.sleep(anyIntger())

您还可以模拟和验证更复杂的事情。例如,(指令)将
SomeClass.getSomethingState()
结果
x
次(未)
DONE
,然后在
x+1
第一次进行更改,然后依次验证(
stop-/start-/doSomething()