Java 正在测试传入的值。。不仅仅是返回值
我有一节课看起来像这样Java 正在测试传入的值。。不仅仅是返回值,java,unit-testing,mockito,Java,Unit Testing,Mockito,我有一节课看起来像这样 @Inject AnotherClass anotherClass; public class Foo { public Boolean someMethod(){ Holder<Boolean> booleanHolder = new Holder<Boolean>(); //I have no control over this method, but I need it to set boolea
@Inject
AnotherClass anotherClass;
public class Foo {
public Boolean someMethod(){
Holder<Boolean> booleanHolder = new Holder<Boolean>();
//I have no control over this method, but I need it to set booleanHolder
anotherClass.anotherMethodCall(booleanHolder, Boolean.TRUE);
return booleanHolder.value;
}
}
@Inject
另一类,另一类;
公开课Foo{
公共布尔方法(){
保持架布尔保持架=新保持架();
//我无法控制这个方法,但我需要它来设置booleanHolder
anotherClass.anotherMethodCall(booleanHolder,Boolean.TRUE);
返回booleanHolder.value;
}
}
我想做的是测试这个方法。这几乎是不可能的。我被另一个班嘲笑了。但我只能知道传入了什么变量。或者告诉我另一个方法调用应该返回什么
我想做的是能够设置调用该方法后booleanHolder将是什么
有什么想法吗?Holder类是否有一个访问器(可能是模板化的),以便您可以在调用后获取它所持有的值,然后对该值执行assert()?我假设您有一个“outer”方法的测试版本,它使用“by reference”仿真参数调用另一个方法。我的问题实际上是我使用mockito的方式。我指的是错误的值。如果有人想知道这是怎么回事
public void test_someMethod(){
Foo myClass = new Foo();
AnotherClass mockClass = mock(AnotherClass.class);
final Boolean testBool;
when(anotherClass.anotherMethodCall((Holder)anyObject(),anyBoolean()).thenAnswer(new Answer(){
@Override
public Object answer(InvocationOnMock invocation) throws Throwable {
Object[] args = invocation.getArguments();
Holder<Boolean> newHolder = (Holder<Boolean>) args[0];
newHolder.value = testBool;
}
}
Boolean retBool = myClass.someMethod();
assertTrue(retBool);
}
public void test\u someMethod(){
Foo myClass=new Foo();
AnotherClass mockClass=mock(AnotherClass.class);
最终布尔测试布尔;
当(anotherClass.anotherMethodCall((Holder)anyObject(),anyBoolean())。然后回答(new Answer()){
@凌驾
公共对象应答(InvocationMock调用)抛出Throwable{
对象[]args=invocation.getArguments();
Holder newHolder=(Holder)args[0];
newHolder.value=testBool;
}
}
布尔retBool=myClass.someMethod();
资产真实性(retBool);
}
出于明显的原因,这并不完全是我正在做的事情。但这是一个很好的通用案例。您到底在测试哪种方法?如果不返回Holder对象,我认为您不可能。