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对象,我认为您不可能。