//如何在JUnit中为这个类编写单元测试......
package com.emr.common.helper;
import java.util.Random;
public class RandomTextGenerator {
public static String getAutogenerateText()
{
/*Auto genarate password */
String password = "";
/* Create Auto Password */
int count = 36;
// int range = Integer.MAX_VALUE;
int sum = 0;
Random rand = new Random();
for (int j = 0; j < 45; j++) {
for (int i = 0; i < count; i++) {
sum = rand.nextInt(count);
}
char[] pass = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V',
'W', 'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7',
'8', '9' };
password = password + pass[sum];
}
return password;
}
}
答案 0 :(得分:3)
如果你说new Random()
,你将无法有效地测试这个类 - 通过这样做你已经硬编码了一个有效的外部依赖(一个随机数源)的引用,你可以控制。
相反,您应该通过方法参数将Random
对象传递给类,并在测试中提供一个模拟实现,您可以为其控制返回的值。
答案 1 :(得分:1)
尝试将它与RegEx匹配,后者检查返回的String是否匹配包含字母和数字的45个字符。
此RegEx应该有效:
^[A-Z0-9]{45}$