在我的代码中,我有lineItems.getList()在该类中调用受保护的方法。
public class Itemized {
List<String> itemList = new ArrayList<String>();
public void execute {
try {
//Establish some logic here
Items lineItems= new Items (order1, order2);
itemList = lineItems.getList();
}
catch (Exception e) {
.....
}
finally {
(if itemList !=null && !itemList.isEmpty()) {
//do something here
}
这是我的测试案例
@Mock
private Items items = Mockito.mock(Items.class);
@Injectmocks
Itemized itemized;
@Test
public void testItemized() throws Exception {
List<String> mockItemList = new ArrayList<String>();
mockItemList.add("ABC");
mockItemList.add("DEF");
PowerMockito.whenNew(Items.class).withAnyArguments().thenReturn(items);
PowerMockito.when(items.getList()).thenReturn(mockItemList);
mockItemList = items.getList();
itemized.execute();
}
当我试图建立一个系统时。出来打印测试用例中的mockTestList,返回列表。然而,在我的逐项分类中,它总是返回空的,因此,它永远不会到达finally块。
更新这里是我试图模拟的类
public class Items {
private List<String> items = new ArrayList<String>();
public List<String> getList() {
return items;
.....
//other protected methods that call addItems
......
private void addItems(String item) {
items.add(item);
}
]
我对单元测试还相当陌生,所以可能我在这条线上的某个地方错误地嘲笑了它。
你能试试这个吗:
@Mock
private Items items;
@Injectmocks
Itemized itemized = new Itemized();
@Before
public void setup(){
Mockito.initMocks(this);
}
@Test
public void testItemized() throws Exception {
List<String> mockItemList = new ArrayList<String>();
mockItemList.add("ABC");
mockItemList.add("DEF");
PowerMockito.whenNew(Items.class).withAnyArguments().thenReturn(items);
PowerMockito.when(items.getList()).thenReturn(mockItemList);
//mockItemList = items.getList();
itemized.execute();
}
如果你忘记了Mockito。(这个) 这将是根本原因。
我正在使用Mockito 1.9.5。我如何嘲笑从受保护的方法返回的内容?我有这个受保护的方法... 然而,当我尝试在JUnit中这样做时: 在最后一行,我得到一个编译错误“方法‘myMethod’不可见”如何使用Mockito来模拟受保护的方法?如果答案是这样,我愿意升级我的版本。
我尝试模拟父类的受保护方法。因此,我使用&。我的家长班。
当我用公共方法重写受保护的方法时,Java编译器不会抱怨。这里到底发生了什么?由于父方法的可见性较低,它是覆盖还是隐藏父方法?
问题内容: 当我用方法覆盖方法时,Java编译器不会抱怨。这里到底发生了什么?由于父方法的可见性较低,它是覆盖还是隐藏父方法? 问题答案: 子类始终可以扩大访问修饰符,因为它仍然是超类的有效替代。从Java规范中有关覆盖和隐藏的需求: 覆盖或隐藏方法的访问修饰符(第6.6节)必须至少提供与覆盖或隐藏方法相同的访问权限,如下所示: 如果覆盖或隐藏方法是公共的,则覆盖或隐藏方法必须是公共的;否则,将发
我们目前使用Mockito+PowerMock作为我们的主要模仿框架,并且在开始将一些代码转移到Java8时遇到了一些问题。因此,我们决定将jMockit作为一种替代方案进行评估。我对嘲笑概念有相当好的理解,但我承认我对jMockit的经验非常有限。 然而,我在测试一些在我看来应该是非常基本的东西时遇到了问题:被测试的类在其构造函数中使用New创建其他类的实例。我想让这个新调用返回一个模拟实例。
我希望Hibernate能够使用受保护的无参数构造函数实例化类,然而,我们得到了:。 更改自: 致: 问题已经解决了。我们使用的Hibernate版本:3.6.10.final。 对于什么时候无参数构造函数必须是而不是才能使Hibernate工作,是否有任何规则?