【发布时间】:2019-12-13 10:31:28
【问题描述】:
我一直在练习 Junit 来编写测试用例,并且遇到了 Mockito,我可以用它来模拟依赖对象。所以我写了一个示例代码来测试它的行为。
我有两个类Sample和Second。
第二个类有一个简单的方法,它只返回一个字符串作为参数传递给这个方法
public class Second{
public String show(String y ){
return y
}
}
现在有一个 Sample 类,我在 Sample 类的方法中调用了这个 show 方法并返回字符串。
public class Sample{
public String sampleMethod(){
Second s = new Second();
return s.show("This should not be displayed");
}
}
现在我正在测试 Sample 类,因此我创建了一个名为 SampleTest
的文件public class SampleTest{
@Mock
Second s;
@InjectMocks
Sample s = new Sample();
@Before
public void setUp(){
MockitoAnnotations.initMocks(this);
when(s.show(any(String.class))).thenReturn("This should be displayed");
}
@Test
public void sampleMethodTest(){
assertEquals("This should be displayed", s.sampleMethod());
}
}
现在创建了 Second classes 对象并在 Sample 方法中调用了它的方法,我已经模拟了 Second class 并将模拟注入到 Sample 中。
然后在 Before 方法中,我编写了 when 和 thenReturn 语句:
当在第二个对象中调用 show 方法时,我返回了我想要的输出,即“应该显示”
但是输出不是我所期望的,而不是调用 when 和 thenreturn 语句,而是调用 Second 对象中真正的 show 方法。
我无法模拟创建该方法的对象。
我该怎么做?
我只需要使用 mockito 而不是 powermockito
【问题讨论】:
-
您是否尝试在类级别定义第二个变量?
标签: java unit-testing mocking mockito