Java 在JMockit中模拟被测类的私有方法

Java 在JMockit中模拟被测类的私有方法,java,junit,mocking,jmockit,Java,Junit,Mocking,Jmockit,在我的被测类(CUT)——一个ejb——中,我有一个私有方法“getConnection”。 我想测试另一种切割方法,但这种方法会失败 我尝试了如下所示,但“invoke”是错误的。我不想调用该方法,我想将其存根。但是怎么做呢?(“连接”是存根) 您的测试是正确的,只是缺少模拟类型的声明。在本例中是EJB类 通常,模拟的类型是完全模拟的(所有方法)。在这种情况下,您可以向测试方法声明一个@mock MyEJB archivingBean参数 另一方面,对于部分模拟,可以使用非严格预期(对象…构造

在我的被测类(CUT)——一个ejb——中,我有一个私有方法“getConnection”。 我想测试另一种切割方法,但这种方法会失败

我尝试了如下所示,但“invoke”是错误的。我不想调用该方法,我想将其存根。但是怎么做呢?(“连接”是存根)


您的测试是正确的,只是缺少模拟类型的声明。在本例中是EJB类

通常,模拟的类型是完全模拟的(所有方法)。在这种情况下,您可以向测试方法声明一个
@mock MyEJB archivingBean
参数

另一方面,对于部分模拟,可以使用
非严格预期(对象…
构造函数,如下所示:

new NonStrictExpectations(archivingBean) {{ // <== note the argument here
    invoke(archivingBean, "getConnection"); result = connection;
}};

newnonstrictexpections(archivingBean){{{//最新版本的jmockit似乎没有“invoke”方法这些方法是从
mockit.Deencapsulation
类静态导入的。
new NonStrictExpectations(archivingBean) {{ // <== note the argument here
    invoke(archivingBean, "getConnection"); result = connection;
}};