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