我有一个包含私有类的公共类:
public class Out
{
private class In
{
public String afterLogic;
public In(String parameter)
{
this.afterLogic = parameter+"!";
}
}
}
想用jMockit测试In类。这些方面的东西:
@Test
public void OutInTest()
{
Out outer = new Out();
Object ob = Deencapsulation.newInnerInstance("In", outer); //LINE X
}
问题是,在LINE X中,当尝试将ob转换为In时,无法识别In类。
知道如何解决这个问题吗?
谢谢!
答案 0 :(得分:2)
类In
中唯一的构造函数采用String
参数。因此,您需要传递参数值:
Object ob = Deencapsulation.newInnerInstance("In", outer, "test");
答案 1 :(得分:0)
正如评论中所建议的那样,一种方法是将内部类的访问修饰符从私有更改为公共。 第二种方式(如果你不想让你的内部类公开),你可以测试实际调用内部类方法的外部类的公共方法。
答案 2 :(得分:0)
将内部类的范围更改为默认值,然后确保测试位于同一个包中。
答案 3 :(得分:0)
有两种方法,首先如其他帖子中所述,将范围更改为公开。我支持的第二个是避免完全测试私人课程。因为测试应该针对类的可测试代码或方法编写,而不是针对默认行为。