如何使用私有内部类进行测试?

时间:2018-11-09 06:40:11

标签: java junit testng

例如:

我的课堂上有一个私人枚举,如下所示:

@Controller
public class SomeController {

    @GetMapping(value = "/username")
    @ResponseBody
    public String currentUserName(Authentication authentication) {

        if (authentication != null) {
            return authentication.getName();

        } else {
            return "";
        }
    }
}

我想在测试类中使用这种类型,而无需再次重新定义。

此外,我想保持可见度最小。

1 个答案:

答案 0 :(得分:2)

不可能测试私有类。您必须通过简单地删除“私有”访问修饰符将可见性提高到至少“ package-private”。

如何测试此类的标准方法是在与测试类完全相同的程序包中定义测试。

经过测试的方法本身也必须至少是“ package-private”。 也可以测试私有方法,但这需要使用反射,因此它被认为是一种hack(https://stackoverflow.com/a/18533714/859673