gpt4 book ai didi

java - 如何在JUnit测试中使用Mockito?

转载 作者:行者123 更新时间:2023-12-01 19:36:03 26 4
gpt4 key购买 nike

要测试的类是一个自制的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);
}

}

最佳答案

在您的测试中,您仅测试模拟,而不测试您的类。对于您提到的,只需更改设置方法即可实例化真正的类。

@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 个元素的新列表。

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

关于java - 如何在JUnit测试中使用Mockito?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59219201/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com