Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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中对ZipoutStream进行单元测试_Java_Unit Testing - Fatal编程技术网

如何在Java中对ZipoutStream进行单元测试

如何在Java中对ZipoutStream进行单元测试,java,unit-testing,Java,Unit Testing,我没有做过很多单元测试,想知道是否有人可以帮助/或指导我如何对以下源代码进行单元测试: public byte[] zipBytes(String filename, byte[] content) throws IOException { ByteArrayOutputStream baos = new ByteArrayOutputStream(); ZipOutputStream zos = new ZipOutputStream(baos); ZipEntry e

我没有做过很多单元测试,想知道是否有人可以帮助/或指导我如何对以下源代码进行单元测试:

public byte[] zipBytes(String filename, byte[] content) throws IOException {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    ZipOutputStream zos = new ZipOutputStream(baos);
    ZipEntry entry = new ZipEntry(filename);
    entry.setSize(content.length);
    zos.putNextEntry(entry);
    zos.write(content);
    zos.closeEntry();
    zos.close();
    return baos.toByteArray();
}
谢谢。

两种方式:

  • 您获取一些数据,并以一种可靠的、已知的工作方式将其压缩。在单元测试中,压缩相同的数据,并将输出与已知的正确输出进行比较
  • 或者,您可以在单元测试中调用已知正在工作的解压方法,以验证是否可以解压压缩后的数据,并生成与原始数据相同的数据

  • 如果您可以信任zip功能始终输出相同的数据,那么数字1可能是最正确的。数字2取决于您是否拥有一个不需要进行单元测试的受信任的解压功能。

    您可以只压缩一个已知字符串,并确认输出中的字节数小于字符串中的字节数,即它已经进行了一些压缩

    通过检查zipBytes产生的确切字节数,您的单元测试“倾向于”对ZipOutStream功能进行单元测试,而不是您对它的使用

    如果您有一个相反的方法“unzipBytes”,您可以通过将已知字符串推入zipBytes、将结果推入unzipBytes并确认它与测试字符串相同来确认这两种方法都正确使用

    如果您没有这样做,那么在单元测试中,您可以执行手动步骤,创建ZipInputStream并确认有一个条目,它的大小符合字节/字符串的原始长度,并且当从中读取时等于用于测试zipBytes的相同字节


    否则,@Erwin的答案就是你需要做的

    出于好奇,我建议使用标准具字节[]@talex,为什么要使用标准具字节[]?这是最简单的方法。您可以为固定上下文创建zip文件。使用一些util检查该文件是否格式正确,是否包含您需要的内容。然后将你的方法的结果和这个文件进行比较。@Simple Solution你能把你的解决方案放在这里吗?我真的很感兴趣你是如何解决它的,因为现在我有同样的问题,如何正确地测试它