【问题标题】:Integration test for image download java图像下载java的集成测试
【发布时间】:2014-10-29 12:39:22
【问题描述】:

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

谢谢:)

【问题讨论】:

    标签: java testing integration-testing


    【解决方案1】:

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

    1. 计算下载文件前后的哈希值。
    2. 比较哈希值。如果它们相等,则您的文件的完整性很好。

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

    【讨论】:

    • 你好。我发现你的回答很有趣。我面临着类似的情况,Web 应用程序生成要下载的文件。你的答案在那种情况下也有效吗?我发布了一个 question 关于。 TIA。
    【解决方案2】:

    既然你正在使用和

    期望得到字节[]中的文件

    有一个输入流装饰器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();
           }
       }
    }
    

    Here你可以找到其他也很好的代码sn-ps。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多