Java 如何在JUnit测试中使用Mockito?

Java 如何在JUnit测试中使用Mockito?,java,junit,mockito,Java,Junit,Mockito,要测试的类是自制的LinkedList。在一个特定的方法中,我只想使用Mockito来避免向列表中添加额外的元素,这可能会影响其他测试方法。但我不相信我用得对。有什么建议吗 public class AppTest { private LinkedList<Integer> link; @Before public void setUp() { //just want to populate the list with 4 elements for all tests

要测试的类是自制的LinkedList。在一个特定的方法中,我只想使用Mockito来避免向列表中添加额外的元素,这可能会影响其他测试方法。但我不相信我用得对。有什么建议吗

public class AppTest {

private LinkedList<Integer> link;
@Before
public void setUp() {
    //just want to populate the list with 4 elements for all tests
    link=mock(com.sed.MyLinkedList.LinkedList.class);
    link.add(111);
    link.add(222);
    link.add(333);
    link.add(444);
}

@Test
public void testApp() {     
    //add extra elements here for this specific test, shouldn't be really added to list 
    link.add(2, 900);
    //here 'when().thenReturn()' is useless
    when(link.toString()).thenReturn("[111, 222, 900, 333, 444]");
    assertEquals("[111, 222, 900, 333, 444]",link.toString());      
}

@Test(expected = ArrayIndexOutOfBoundsException.class)
public void testAppException() {
    link.add(5, 900);
}
公共类AppTest{
私有链接列表链接;
@以前
公共作废设置(){
//只想用所有测试的4个元素填充列表
link=mock(com.sed.MyLinkedList.LinkedList.class);
链接.添加(111);
link.add(222);
链接。添加(333);
link.add(444);
}
@试验
public void testApp(){
//在这里为这个特定的测试添加额外的元素,不应该真正添加到列表中
链接。添加(2900);
//此处的“when().thenReturn()”无效
when(link.toString())。然后返回(“[111222900333444]”);
assertEquals(“[111222900333444]”,link.toString();
}
@测试(预期=ArrayIndexOutOfBoundsException.class)
公共无效testAppException(){
链接。添加(5900);
}

}

在测试中,您只测试一个模拟,而不是您的类。对于您提到的,只需更改setup方法来实例化真实的类

@Before
public void setUp() {
    //just want to populate the list with 4 elements for all tests
    link = new com.sed.MyLinkedList.LinkedList();
    link.add(111);
    link.add(222);
    link.add(333);
    link.add(444);
}
在每次测试之前,都会调用setup方法,因此您将有一个包含4个元素的新列表

当正在测试的类使用协作器时,将使用mock。背后的想法是隔离类,因此您可以确保任何错误都来自被测试的类,而不是协作者