在哪里存储用于单元测试的二进制文件
Where to store a binary file to be used for unit testing
我应该在哪里存储我需要用于单元测试的资源(在我的例子中是二进制文件)?
具体来说,我的目录结构是标准的:
src -> main -> java -> com.company.project -> classes...
-> test -> java -> com.company.project -> classes...
我想模拟从文件系统中读取的文件并将其替换为我的项目中的文件。
如果您使用 Mavens 标准目录布局,src\test\resources
是单元测试所需资源的好地方。
在此处阅读有关不同目录的更多信息:
https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html
我认为需要二进制资源来进行单元测试是一种代码味道。它表明您的代码的 API 表达能力不够:它可以作为输入的只是一团字节。这个资源里有什么?它真的只是一个字节流,还是有某种结构?
如果您的代码解析此二进制输入,请考虑同时编写代码以将此二进制格式写入输出,然后测试写入后读取是否对称。如果您不希望您的代码 提供 编写二进制格式的功能,请将这些方法设为包私有,而不是 public
,或者将它们放在 class 仅用于测试。
如果您的代码不解析此二进制输入,而是调用一些其他代码来解析二进制并使用该解析的结果,请更改代码的 API 以便其输入是已解析的数据.
我应该在哪里存储我需要用于单元测试的资源(在我的例子中是二进制文件)?
具体来说,我的目录结构是标准的:
src -> main -> java -> com.company.project -> classes...
-> test -> java -> com.company.project -> classes...
我想模拟从文件系统中读取的文件并将其替换为我的项目中的文件。
src\test\resources
是单元测试所需资源的好地方。
在此处阅读有关不同目录的更多信息: https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html
我认为需要二进制资源来进行单元测试是一种代码味道。它表明您的代码的 API 表达能力不够:它可以作为输入的只是一团字节。这个资源里有什么?它真的只是一个字节流,还是有某种结构?
如果您的代码解析此二进制输入,请考虑同时编写代码以将此二进制格式写入输出,然后测试写入后读取是否对称。如果您不希望您的代码 提供 编写二进制格式的功能,请将这些方法设为包私有,而不是 public
,或者将它们放在 class 仅用于测试。
如果您的代码不解析此二进制输入,而是调用一些其他代码来解析二进制并使用该解析的结果,请更改代码的 API 以便其输入是已解析的数据.