Unit testing 如何对具有完整特性的方法进行单元测试<;用户定义对象>;。是否使用Mockito提供同步(()->;someMethodWithReturn())?
我有一个控制器类,它有一个方法something(),该方法调用同一类的两个不同方法,并合并两个调用的结果Unit testing 如何对具有完整特性的方法进行单元测试<;用户定义对象>;。是否使用Mockito提供同步(()->;someMethodWithReturn())?,unit-testing,junit,mockito,completable-future,Unit Testing,Junit,Mockito,Completable Future,我有一个控制器类,它有一个方法something(),该方法调用同一类的两个不同方法,并合并两个调用的结果 class Controller{ ... public UDC doSomething(){ CompletableFuture<UDC> feature1 = CompletableFuture.supplyAsync(()-> {this.doOther()}).exceptionally(ex -> {return new SomeExcep
class Controller{
...
public UDC doSomething(){
CompletableFuture<UDC> feature1 = CompletableFuture.supplyAsync(()-> {this.doOther()}).exceptionally(ex -> {return new SomeException();});
CompletableFuture<UDC> feature2 = CompletableFuture.supplyAsync(()-> {this.doSomeOther()}).exceptionally(ex -> {return new SomeException();});
...
return feature1.combine(feature2).get();
}
...
}
类控制器{
...
公共UDC剂量测定法(){
CompletableFuture feature1=CompletableFuture.supplyAsync(()->{this.doOther()})。异常(ex->{return new SomeException();});
CompletableFuture feature2=CompletableFuture.supplyAsync(()->{this.doSomeOther()})。异常(ex->{return new SomeException();});
...
返回feature1.combine(feature2.get();
}
...
}
我认为你不应该用Mockito来模拟可完成的未来
在这里,他们中的任何一个
在测试中,将控制器的doSomething
功能视为一个黑匣子,给出一些输入返回UDC
现在,有可能doOther
和/或doSomeOther
调用一些应该被模拟的外部代码。在这种情况下,控制器
可能如下所示:
class Controller {
private final SomeExternalDependency dependency1;
public Controller(SomeExternalDependency dependency1) {
this.dependency1 = dependency1;
}
private UDC doOther() {
...
dependency1.foo();
...
}
private UDC toSomeOther() {
...
dependency1.bar();
...
}
}
在本例中,在测试中,您可以像往常一样使用mockito模拟依赖关系1:
class MyTest {
@Test
public void doSomething() {
SomeExternalDependency dep = Mockito.mock(SomeExternalDependency.class);
// specify the expectations
Controller controller = new Controller(dep);
controller.doSomething();
}
}