图像下载java的集成测试

时间:2014-10-29 12:39:22

标签: java testing integration-testing

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

感谢:)

2 个答案:

答案 0 :(得分:5)

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

  1. 在下载文件之前和之后计算哈希值。
  2. 比较哈希值。如果它们相同,那么您的文件的完整性就会很好。
  3. 您可以使用MD5或SHA-1等哈希算法。如果文件较小,MD5是好的。对于大量文件比较,SHA-1将非常有用,因为冲突会更少。

答案 1 :(得分: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();
       }
   }
}

Here你还可以找到其他好的代码片段。