我正在尝试编写集成测试,以查看是否从网址正确下载了文件。 我不确定如何测试这个,因为我希望在byte []中获取文件,但我不确定我正在比较它的图像。 我想过手动下载文件,然后将其转换为字节并获取结果并将其粘贴到代码中作为预期值,然后将其与我得到的结果进行比较。 如果你有更好的想法,我会很高兴听到它。
感谢:)
答案 0 :(得分:5)
比较图像的哈希值会很有帮助。
您可以使用MD5或SHA-1等哈希算法。如果文件较小,MD5是好的。对于大量文件比较,SHA-1将非常有用,因为冲突会更少。
答案 1 :(得分:1)
因为你正在使用和
期望以byte []
获取文件
有输入流装饰器java.security.DigestInputStream
或java.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你还可以找到其他好的代码片段。