图像下载java的集成测试

我正在尝试编写集成测试,以查看是否从URL正确下载了文件。 我不确定如何测试这个,因为我希望在byte []中获取文件,但我不确定我正在比较它的图像。 我想过手动下载文件然后将其转换为字节并获取结果并将其粘贴到代码中作为预期值,然后将其与我得到的结果进行比较。 如果你有更好的主意,我会很高兴听到它。

谢谢:)

比较图像的哈希值将很有帮助。

  1. 在下载文件之前和之后计算哈希值。
  2. 比较哈希值。 如果它们相同,那么您的文件的完整性就很好。

您可以使用MD5或SHA-1等哈希算法。 如果文件较小MD5是好的。 对于大量文件比较,SHA-1将非常有用,因为冲突会更少。

因为你正在使用和

期望以byte []获取文件

有一个输入流装饰器, java.security.DigestInputStreamjava.security.MessageDigest ,因此您可以在使用输入流时计算摘要。

 import java.io.*; import java.security.MessageDigest; public class MD5Checksum { public static byte[] createChecksum(String filename) throws Exception { InputStream fis = new FileInputStream(filename); byte[] buffer = new byte[1024]; MessageDigest complete = MessageDigest.getInstance("MD5"); int numRead; do { numRead = fis.read(buffer); if (numRead > 0) { complete.update(buffer, 0, numRead); } } while (numRead != -1); fis.close(); return complete.digest(); } public static String getMD5Checksum(String filename) throws Exception { byte[] b = createChecksum(filename); String result = ""; for (int i=0; i < b.length; i++) { result += Integer.toString( ( b[i] & 0xff ) + 0x100, 16).substring( 1 ); } return result; } public static void main(String args[]) { try { System.out.println(getMD5Checksum("apache-tomcat-5.5.17.exe")); } catch (Exception e) { e.printStackTrace(); } } } 

在这里你可以找到其他很好的代码片段。