jMockit访问私有类

时间:2012-06-04 18:23:57

标签: java private inner-classes jmockit

我有一个包含私有类的公共类:

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类。

知道如何解决这个问题吗?

谢谢!

4 个答案:

答案 0 :(得分:2)

In中唯一的构造函数采用String参数。因此,您需要传递参数值:

Object ob = Deencapsulation.newInnerInstance("In", outer, "test");

答案 1 :(得分:0)

正如评论中所建议的那样,一种方法是将内部类的访问修饰符从私有更改为公共。 第二种方式(如果你不想让你的内部类公开),你可以测试实际调用内部类方法的外部类的公共方法。

答案 2 :(得分:0)

将内部类的范围更改为默认值,然后确保测试位于同一个包中。

答案 3 :(得分:0)

有两种方法,首先如其他帖子中所述,将范围更改为公开。我支持的第二个是避免完全测试私人课程。因为测试应该针对类的可测试代码或方法编写,而不是针对默认行为。