所以基本上我想创建一个模拟单元测试,它返回一个泛型类型,对我来说,我必须验证该方法是否返回特定的对象类型。任何关于此的想法或提示都会有所帮助。
class Example {
public AnotherClass<T> generateExampleType( String args ) {
return new AnotherClass<T> (args);
}
}
class Another {
String method1(Type1 a) {
//
}
String method2(Type2 a) {
//
}
}
class ClassUnderTest{
public void methodUnderTest() {
// code
AnotherClass<Type1> obj1 = helper.<Type1>generateExampleType("abc");
AnotherClass<Type2> obj2 = helper.<Type2>generateExampleType("def");
String one = another.method2(obj2);
String two = another.method1(obj1); // this fails as part of verify in unit test
// code
}
}
测试
when(helper.<Type1>generateExampleType(anyString()).thenReturn(Obj1Mock);
when(helper.<Type2>generateExampleType(anyString()).thenReturn(Obj2Mock);
verify(another).method2(Obj2Mock);
verify(another).method1(Obj1Mock); // This fails expected Obj1, actually passed Obj2
Obj1和Obj2都用作同一工作流中其他方法调用的一部分。但是,mockito始终默认为最后创建的(在此实例中为obj2)并且我的单元测试失败
/*
Expected class - Type1
Actually invoked - Type2
*/
答案 0 :(得分:1)
最后得到了所需的解决方案。这应该可以解决这个问题,它确实对我有用: -
http://www.agilearts.nl/tasty-test-tip-using-argumentcaptor-for-generic-collections-with-mockito/