Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.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_Maven_Unit Testing_Resources - Fatal编程技术网

在java中,在源代码和测试之间共享资源的推荐方法是什么?

在java中,在源代码和测试之间共享资源的推荐方法是什么?,java,maven,unit-testing,resources,Java,Maven,Unit Testing,Resources,我在src/main/resources文件夹中有一些文件,这些文件是我正在使用的应用程序使用的,我将其中几个文件复制到src/test/resources文件夹中,以便我的测试可以轻松访问它们。我想知道这是否是单元测试的最佳实践?例如,我可以从src/main/resources加载资源,这样,如果有人更改了源代码,我的测试就会失败。这方面的最佳实践是什么?在测试期间,src/main/resources中的文件是可用的,我刚刚确认我就是这样。您可以通过将这些资源添加到src/test/res

我在
src/main/resources
文件夹中有一些文件,这些文件是我正在使用的应用程序使用的,我将其中几个文件复制到
src/test/resources
文件夹中,以便我的测试可以轻松访问它们。我想知道这是否是单元测试的最佳实践?例如,我可以从
src/main/resources
加载资源,这样,如果有人更改了源代码,我的测试就会失败。这方面的最佳实践是什么?

在测试期间,
src/main/resources
中的文件是可用的,我刚刚确认我就是这样。您可以通过将这些资源添加到
src/test/resources
来覆盖这些资源,但据我所知,您无法在测试中隐藏它们,因此看起来您的系统上似乎存在配置错误。

除非有充分的理由复制这些文件,否则我将有一个副本。使用
src/main/resources
,除非它们不应该被发布。main/resource中的文件内容是静态的吗?它会改变吗?如果我有一个测试,其中返回数据的断言是硬编码的,例如,检查从文件读取的字符串是否是我期望的字符串的测试,那么我必须在断言中硬编码期望的字符串。如果main/resources下的文件发生更改,我的测试将开始失败。测试的一般方法是,测试环境在我每次运行它时都应该保持不变。如果资源属于主代码,并且您只在测试中使用它来检查主代码,那么您应该将其保存在
src/main/resources
src/test/resources
用于仅用于测试的内容。