我有一个单元测试,我试图为一个generateKey(int **length**)方法编写。方法: 1. 创建一个大小为输入参数长度的字节数组
2. 使用 SecureRandom().nextBytes(randomKey) 方法用随机值填充字节数组 3. 将填充有随机值的字节数组编码为 UTF-8字符串对象 4. 将原始字节数组(称为randomKey)重写为 0 以确保安全 5. 返回 UTF-8 编码的字符串
我已经有一个单元测试检查用户输入一个负值(即-1),这样字节数组会抛出一个负数组大小异常。
一个好的正面测试用例是检查 UTF-8 编码的字符串是否已成功创建?有没有一种方法可以调用生成的字符串来检查它是否等于“UTF-8”编码?
我无法检查字符串是否等于相同的字符串,因为每次调用字节数组时都会填充随机值......
源代码在这里:
public static String generateKey(int length) {
byte[] randomKey = new byte[length];
new SecureRandom().nextBytes(randomKey);
String key = new String(randomKey, Charset.forName("UTF-8"));//Base64.getEncoder().encodeToString(randomKey);
Arrays.fill(randomKey,(byte) 0);
return key;
}