[英]how to write unit test for this class in JUnit
//如何在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;
}
}
如果你说new Random()
你将无法有效地测试这个类 - 通过这样做你已经硬编码了一个你无法控制的外部依赖(随机数源)的引用。
相反,您应该通过方法参数将Random
对象传递给类,并在测试中提供一个模拟实现,您可以控制返回的值。
尝试将它与RegEx匹配,RegEx检查返回的String是否匹配45个字符和字母和数字。
此RegEx应该有效:
^[A-Z0-9]{45}$
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.