如何在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你能把你的解决方案放在这里吗?我真的很感兴趣你是如何解决它的,因为现在我有同样的问题,如何正确地测试它