>我有以下测试,它在 IDE 中执行时可以成功工作,但是当我执行 mvn 安装时,它失败并显示以下消息
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 test 运行时,它打印为 false。知道为什么这会令人讨厌
吗new MockUtil().isMock(object1)
我发现如果我用等同的xml模拟配置注释掉@ReplaceByMock,它既适用于maven,也适用于IDE。奇怪!!等效的 XML 如下所示:
<mockito:mock id="object1" class="org.fs.service.validation.Object1" />
更新我正在将代码从分支合并到主干,并再次想到使用主干中的注释运行。我很惊讶地看到它有效。可能我的分支中有一些问题导致了这个问题。