Kum*_*tix 83 java junit unit-testing annotations
谁有针对这一共同需求的解决方案.
我的应用程序中有一个类.
一些方法是公共的,因为它们是api的一部分,有些是私有的,因为它们用于内部使用,使内部流程更具可读性
现在,我想写一个单元测试,或者更像是集成测试,它将位于不同的包中,允许调用此方法,但是,我希望不允许正常调用此方法如果你试图从应用程序本身的类中调用它
所以,我在想这样的事情
public class MyClass {
public void somePublicMethod() {
....
}
@PublicForTests
private void somePrivateMethod() {
....
}
}
Run Code Online (Sandbox Code Playgroud)
上面的注释将私有方法标记为"公共测试",这意味着,对于任何在test ...包下的类,将允许编译和运行时,而编译和\或运行时将对任何类失败不在测试包下.
有什么想法吗?有这样的注释吗?有一个更好的方法吗?
似乎你写的单元测试越多,你的更多信息就会破坏你的封装......
JB *_*zet 122
常见的方法是使私有方法受保护或包私有,并将此方法的单元测试放在与被测试类相同的包中.Guava有一个@VisibleForTesting
注释,但它仅用于文档目的.
Cyg*_*sx1 21
如果您的测试覆盖率对于测试类中的所有公共方法都很好,那么公共调用的私有方法将自动进行测试,因为您将断言所有可能的情况.
JUnit Doc说:
测试私有方法可能表明这些方法应该转移到另一个类中以提高可重用性.但是如果必须......如果您使用的是JDK 1.3或更高版本,则可以使用反射来借助PrivilegedAccessor来破坏访问控制机制.有关如何使用它的详细信息,请 阅读本文.
Nat*_*hes 10
考虑使用接口来公开API方法,使用工厂或DI来发布对象,以便消费者仅通过接口了解它们.该界面描述了已发布的API.这样,您可以在实现对象上创建任何您想要公开的内容,并且它们的使用者只能看到通过该接口公开的那些方法.
归档时间: |
|
查看次数: |
113346 次 |
最近记录: |