1

我有以下测试,它在 IDE 中执行时可以成功运行,但是当我执行 mvn install 时,它会失败并显示下面的 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 运行时 object1 以模拟形式出现并返回 true,但从 maven 测试运行时打印为 false。知道为什么会发生这种情况

new MockUtil().isMock(object1)
4

1 回答 1

0

我发现如果我用等效的 xml 模拟配置注释掉 @ReplaceByMock,它在 maven 和 IDE.Strange 中都有效!等效的xml如下:

<mockito:mock id="object1" class="org.fs.service.validation.Object1" />

更新 我正在将代码从分支合并到主干,并再次考虑使用主干中的注释运行。我很惊讶地看到它工作。可能我的分支中有一些问题导致了这个问题。

于 2015-01-30T06:28:23.887 回答