Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在哪里放置测试所需的函数?_Java_Unit Testing - Fatal编程技术网

Java 在哪里放置测试所需的函数?

Java 在哪里放置测试所需的函数?,java,unit-testing,Java,Unit Testing,我有两个Java类,它们都有黑盒测试用例,只需执行类的公共API。为了编写一些白盒测试用例,我需要编写一些getter,这些getter不是公共API的一部分,但需要对测试类可见 如何处理这些函数?您可以将getters包设为默认值,并将测试类放在同一个包中。对于“包默认值”的回答是一种合理的方法,但我怀疑是否仅出于测试目的向主源添加任何内容。我还质疑是否需要对类进行所谓的“白盒”测试。如果其他对象总是通过其公共API与您的类的对象交互,那么您为什么还要测试除此之外的任何东西呢?我建议您放弃这种

我有两个Java类,它们都有黑盒测试用例,只需执行类的公共API。为了编写一些白盒测试用例,我需要编写一些getter,这些getter不是公共API的一部分,但需要对测试类可见


如何处理这些函数?

您可以将getters包设为默认值,并将测试类放在同一个包中。

对于“包默认值”的回答是一种合理的方法,但我怀疑是否仅出于测试目的向主源添加任何内容。我还质疑是否需要对类进行所谓的“白盒”测试。如果其他对象总是通过其公共API与您的类的对象交互,那么您为什么还要测试除此之外的任何东西呢?我建议您放弃这种方法,坚持只测试您的公共API。

我经常将“仅代码”部分公开为
公共静态
方法,以便对代码进行单元测试。这对我很有用。

OP:这是Java世界中最常见的解决方案。这听起来很合理。目前,我将测试用例放在一个单独的test.module包树中。显然,测试可能位于不同的位置,因此它们不包含在生产代码中。但是包应该是一样的。我一直认为目录结构必须与包匹配。当我创建投入生产的类列表时,我可以使用
sed
从生产代码中删除
*Test.class
。它必须与类路径级别的包结构相匹配。您可以访问目录
src
test
,并在它们下面具有相同的正确包结构。将它们编译为
测试类
,并将它们都包含在类路径中进行测试。这就是通常的做法。你有任何代码示例吗?有时候你实际上并不需要getter,聪明地使用mock可以得到同样的效果,但更优雅。