繁体   English   中英

如何为具有私有访问说明符的内部类编写 Junit 测试用例?

[英]How to write Junit Test Case for Inner Class that has private access specifier?


我以前看过几个类似答案的答案。 我仍然无法理解,因为我是新手。 下面是我的代码
package com.kishore.junitTestCases.innerClasses; public class OuterClass { String prefix = "Hello, "; private class InnerClasss { public String greet(String name) { return prefix+name; } } public String displayFromInnerClass() { InnerClasss inner = new InnerClasss(); String greetText = inner.greet("Kishore"); System.out.println(greetText); return greetText; } }

是否可以在不更改上述代码中的任何内容的情况下编写 JunitTestCase? 我正在使用 PowerMockito。 这是我的半构建测试用例。

 package com.kishore.junitTestCases.innerClasses; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.MockitoAnnotations; import org.powermock.modules.junit4.PowerMockRunner; @RunWith(PowerMockRunner.class) public class OuterClassTest { OuterClass outerClass = new OuterClass(); @Before public void setUp() { MockitoAnnotations.initMocks(this); } @Test public void displayFromInnerClassTest() throws Exception { } }

注意:您还可以推荐一些最佳实践吗? 谢谢。

你没有。

有可能非常痛苦地获得内部类的实例(如果它实现了一个包含您需要的所有方法的公共接口) - 请参阅PowerMock 是否可以为测试用例实例化内部类? . 这样你就可以测试内部类方法。

但是,据我所知,您不能在模拟内部类的同时测试外部类。 内部类生命周期与外部类实例有着内在的联系,并且没有机制可以替代它。

您想突出您编写的代码中的一个问题 - 如果内部类方法的调用不是操作的固有部分,如果为了测试外部类而模拟内部类是有意义的 - 那么它不应该是私有内部类,它应该是一个注入的依赖项,正是因为您可以单独模拟和测试它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM