Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.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_Resources_Mocking_Directory Structure - Fatal编程技术网

Java 存储用于单元测试的二进制文件的位置

Java 存储用于单元测试的二进制文件的位置,java,unit-testing,resources,mocking,directory-structure,Java,Unit Testing,Resources,Mocking,Directory Structure,我应该在哪里存储我需要用于单元测试的资源(在我的例子中是二进制文件) 具体而言,我的目录结构是一个标准: src -> main -> java -> com.company.project -> classes... -> test -> java -> com.company.project -> classes... 我想模拟从文件系统读取的文件,并将其替换为项目中的文件。src\test\resources是单元测试所需资源的好地

我应该在哪里存储我需要用于单元测试的资源(在我的例子中是二进制文件)

具体而言,我的目录结构是一个标准:

src -> main -> java -> com.company.project -> classes...
    -> test -> java -> com.company.project -> classes...

我想模拟从文件系统读取的文件,并将其替换为项目中的文件。

src\test\resources
是单元测试所需资源的好地方,如果您使用的是mavens标准目录布局

请在此处阅读有关不同目录的更多信息:

< P>我认为单元测试需要二进制资源作为代码嗅觉。这表明您的代码的API表达能力不够:它只能接受一个字节块作为输入。这个资源中有什么?它真的只是一个字节流,还是有某种结构

如果你的代码解析这个二进制输入,那么也要考虑编写代码来编写这个二进制格式作为输出,然后测试写后跟读是对称的。如果不希望代码提供编写二进制格式的功能,请将这些方法包设为私有,而不是

公共
,或者将它们放在仅用于测试的类中


如果您的代码不解析此二进制输入,而是调用其他代码来解析该二进制并使用解析结果,请更改代码的API,使其输入为解析数据。

实际上,您编写的关于先测试后读取的内容正是我在部分测试中所做的。但是,我已经测试了不再支持编写的遗留格式,但是我应该对它们具有向后兼容性,因此我需要将文件另存为资源。除非你有更好的主意?如果他们不是在一段时间前被别人拿走的,而没有问我…:/好吧,从版本控制系统中的旧版本中获取它们。你确实使用版本控制系统,不是吗?我们当然使用VCS,但这超出了我当前任务的范围(找到它,将它与当前代码重新集成,测试它,等等),我确实有最后期限。。。不幸的是,我不是生活在一个乌托邦的环境中。你试过JUNIT吗?尝试