Ken*_*ira 8 java junit integration-testing unit-testing spock
我有一个类,负责将合同从CSV导入数据库.
类本身只有一个开始导入的公共方法,而其他方法都是私有的(因为只有类本身才会使用,并且它们保持逻辑).
我开始使用Spock为这个类进行测试,并且有许多私有方法,我该如何测试它?
我应该把它们变成公开测试吗?只测试主要方法,公共方法?
什么是最好的?
mpr*_*vat 14
理论上,您的私有方法最终会被其中一种公共方法使用,否则它们根本就不会被使用.因此,通常您设置测试以使用必要的上下文调用公共方法,以便它可以访问您的私有方法.
单元测试主要测试编译单元(即类).你可以直接对测试方法进行单元测试,但是它们必须是公共的,这与一个不错的干净API相悖.
因此,测试您的公共方法足以击中所有私有方法.私有方法是类的内部机制,它们不需要直接测试.
小智 5
您可以使用反射来实现此目的。Method 类有一个名为 setAcessible(boolean) 的方法,即使声明为私有/受保护/默认,您也可以调用它。请参阅下面的示例:
YourClass yourClassInstance = new YourClass();
Method yourMethod = YourClass.class.getDeclaredMethod("yourMethod", null);
yourMethod.setAccessible(true);
Object[] parameters = new Object[1];
parameters[0] = "A String parameter";
Object result = yourMethod.invoke(yourClassInstance, parameters);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7146 次 |
| 最近记录: |