我有下面的测试,它在IDE中执行时成功运行,但是当我执行mvn安装时,它失败并显示以下msg
org.mockito.exceptions.misusing.MissingMethodInvocationException:
when() requires an argument which has to be 'a method call on a mock'.
以下是测试类:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(loader = SpringockitoContextLoader.class,locations={"classpath:conf/test-context.xml"})
public class ServiceTest
{
@ReplaceWithMock
@Autowired
private Object1 object1
@Autowired
private Service service;
@Before
public void setup()
{
MockitoAnnotations.initMocks(this);
}
@Test
public void test()
{//below line is failing while doing mvn install
String validateMe="1234"
Mockito.when(object1.validate(validateMe)).thenReturn(true)
}
}
我是否需要任何其他额外配置才能让它在maven中运行?
更新 在进一步分析IDE和maven的结果行为之后。我在测试方法中添加了下面的代码,发现从IDE对象1运行时是模拟并且返回true但是从maven测试运行时它打印为false。 知道为什么会发生这种情况
new MockUtil().isMock(object1)
答案 0 :(得分:0)
我发现如果我用等价的xml模拟配置注释掉@ReplaceByMock,它在maven和IDE.Strange中都有效!等价的xml如下:
<mockito:mock id="object1" class="org.fs.service.validation.Object1" />
<强>更新强> 我正在将代码从分支合并到主干,并再次考虑使用来自主干的注释。我很惊讶地看到它正在工作。可能在我的分支中有一些问题引起了这个问题。