下面是我要测试的代码类
public class ClassA{
private ClassB bb = new ClassB();
public boolean init() {
bb= new ClassB();
bb.init();
return true;
}
public void methodToTest(){
Map<String, Map<String, Integer>> hashmap= new LinkedHashMap<>();
hashmap = bb.method1(hashmap);
}
public ClassB getBB() {
return bb;
}
public void setBB(ClassB bb) {
this.bb= bb;
}
}
我的测试类
@RunWith(PowerMockRunner.class)
public class TestClassA {
@Test
@PrepareForTest({Utilities.class, Logger.class, LoggerFactory.class})
public void getData() throws JsonProcessingException, JSONException {
Map<String, Map<String, Integer>> hashmap= new LinkedHashMap<>();
Map<String, Map<String, Integer>> newHashmap= new LinkedHashMap<>();
ClassA class2Test= new ClassA ();
ClassB mockClassB= Mockito.mock(ClassB.class);
PowerMockito.whenNew(ClassB.class).withAnyArguments().thenReturn(mockClassB);
Mockito.when(mockClassB.method1(hashmap)).thenReturn(newHashmap);
Mockito.verify(mockClassB).method1(hashmap);
class2Test.methodToTest();
}
}
我想你把一些东西混在一起了。
对于重构的版本,您需要将classb
的模拟注入到classa
中(不需要使用powermockito.whennew
)。
还要注意,verifiy
调用必须在测试方法调用之后。
@RunWith(PowerMockRunner.class)
public class SampleTest {
static class ClassB {
public Map<String, Map<String, Integer>> method1(Map<String, Map<String, Integer>> hashmap) {
return null;
}
}
static class ClassA {
private ClassB bb = new ClassB();
public void methodToTest() {
Map<String, Map<String, Integer>> hashmap = new LinkedHashMap<>();
hashmap = bb.method1(hashmap);
}
}
@Mock
ClassB bb;
@InjectMocks
ClassA class2Test;
@Test
public void test() throws Exception {
Map<String, Map<String, Integer>> hashmap = new LinkedHashMap<>();
Map<String, Map<String, Integer>> newHashmap = new LinkedHashMap<>();
Mockito.when(bb.method1(hashmap)).thenReturn(newHashmap);
class2Test.methodToTest();
Mockito.verify(bb).method1(hashmap);
}
}
@Test
@PrepareForTest(ClassA.class)
public void test() throws Exception {
Map<String, Map<String, Integer>> hashmap = new LinkedHashMap<>();
Map<String, Map<String, Integer>> newHashmap = new LinkedHashMap<>();
ClassB bb = Mockito.mock(ClassB.class);
Mockito.when(bb.method1(hashmap)).thenReturn(newHashmap);
PowerMockito.whenNew(ClassB.class).withAnyArguments().thenReturn(bb);
ClassA class2Test = new ClassA();
class2Test.methodToTest();
Mockito.verify(bb).method1(hashmap);
}
我有接口 接口的实现是 我还有一节课 我正在尝试为MyClass编写JUnit。我已经做了 但我需要mockito但没有调用,实际上在验证调用时与这个mock没有任何交互。 谁能提出一些解决方案。
一开始我想对我的英语感到抱歉。 这是我测试后得到的: 有人能告诉我我做错了什么吗?
在执行以下步骤后,我得到了错误:想要但没有调用:实际上,与这个模拟没有任何交互。我不明白我在这里遗漏了什么。
更新下面是异常消息: 更新2用真实实例替换mocked WithDefinitions对象后,我得到以下输出:
我尝试了例外情况下给出的解决方案:mockito想要但没有调用,实际上与这个mock没有任何交互,而这个mockito也想要但没有调用:实际上,与这个mock没有任何交互但仍然得到相同的错误。我是不是漏掉了什么?以下是me的实现:-
问题内容: 我正在开发具有以下功能的条形码扫描应用程序: •访问设备相机,在SurfaceView上预览相机,并自动重新对焦 •Attemtps使用两种方法解码条形码 a)在使用 onTouchEvent(MotionEvent event)的 SurfaceView touch上,尝试拍摄条形码的图片,但获取 java.lang.RuntimeException:takePicture失败 b)