Java 如何使用mockito验证参数化方法

Java 如何使用mockito验证参数化方法,java,junit,mockito,raw-types,Java,Junit,Mockito,Raw Types,我用mockito做单元测试。到目前为止,它对我非常有效,直到我看到两个警告。我查看了mockito的文档,但不知道如何摆脱警告。这是代码。如有任何提示,我们将不胜感激 class Foo<E> { public void doIt(E entity) { } } class TestCase1 { // Compiler Warning -> Unchecked assignment 'Foo<Bar>' to 'Foo' pri

我用mockito做单元测试。到目前为止,它对我非常有效,直到我看到两个警告。我查看了mockito的文档,但不知道如何摆脱警告。这是代码。如有任何提示,我们将不胜感激

class Foo<E> {
    public void doIt(E entity) {
    }
}

class TestCase1 {
    // Compiler Warning -> Unchecked assignment 'Foo<Bar>' to 'Foo'
    private Foo<Bar> fooMock = mock(Foo.class);
}

class TestCase2 {
    private Foo fooMock = mock(Foo.class);
    @Test
    public testBar() {
        fooMock.doIt(any(Bar.class));
        // Compiler Warning -> Unchecked call to 'doIt(E)' as a member of raw type 'Foo'
        verify(fooMock, times(1)).doIt(any(Bar.class));
    }
}

您可以尝试使用Mockito的注释来避免第一个警告。在第二种情况下,匹配器允许使用泛型,因此这应该可以正常工作

@RunWith(MockitoJUnitRunner.class)
public class TestCase1 {

    @Mock
    private Foo<Bar> fooMock;

    @Test
    public void testBar() {
        fooMock.doIt(Matchers.<Bar>any());
        Mockito.verify(fooMock, Mockito.times(1)).doIt(Matchers.<Bar>any());
    }
}
@RunWith(MockitoJUnitRunner.class)
公共类测试用例1{
@嘲弄
私人富富模拟;
@试验
公共void testBar(){
doIt(Matchers.any());
验证(fooMock,Mockito.times(1)).doIt(Matchers.any());
}
}

是,使用注释确实有帮助。
@RunWith(MockitoJUnitRunner.class)
public class TestCase1 {

    @Mock
    private Foo<Bar> fooMock;

    @Test
    public void testBar() {
        fooMock.doIt(Matchers.<Bar>any());
        Mockito.verify(fooMock, Mockito.times(1)).doIt(Matchers.<Bar>any());
    }
}