1

我有一个公共课程,里面有一个私人课程:

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

4 回答 4

2

类中唯一的构造函数In接受一个String参数。因此,您需要传递参数值:

Object ob = Deencapsulation.newInnerInstance("In", outer, "test");
于 2012-06-04T18:54:35.113 回答
0

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

于 2012-06-04T18:52:17.220 回答
0

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

于 2012-06-04T18:53:20.997 回答
0

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

于 2012-06-04T19:02:57.113 回答