Java Junit测试getInstance方法
我正在尝试使用Junit测试一个注册号类,它有一个私有构造函数。因为测试私有构造函数是一种糟糕的设计,所以我正在测试getInstance方法。但是,我有语法错误,例如:Java Junit测试getInstance方法,java,Java,我正在尝试使用Junit测试一个注册号类,它有一个私有构造函数。因为测试私有构造函数是一种糟糕的设计,所以我正在测试getInstance方法。但是,我有语法错误,例如: final RegistrationNo reg = RegistrationNo.getInstance(); 下面是我的完整注册号 public final class RegistrationNo { private static final Map<String, RegistrationNo> RE
final RegistrationNo reg = RegistrationNo.getInstance();
下面是我的完整注册号
public final class RegistrationNo {
private static final Map<String, RegistrationNo> REGISTR = new HashMap<String,RegistrationNo>();
private final int number;
private final char letter;
private final String stringRep;
private RegistrationNo(int number, char letter, String stringRep) {
this.number = number;
this.letter = letter;
this.stringRep = stringRep;
}
public static final RegistrationNo getInstance() {
final Random Rand = new Random();
int high = 9999;
int low = 1000;
int numbers = Rand.nextInt(high - low) + low;
Character letter = (char)(Rand.nextInt(26) + 'a');
String stringRep = letter + "" + numbers;
RegistrationNo n = REGISTR.get(stringRep);
if (n == null) {
n = new RegistrationNo(numbers, letter, stringRep);
REGISTR.put(stringRep, n);
}
return n;
}
char getLetter() {
return letter;
}
int getNumbers() {
return number;
}
public String toString() {
return stringRep;
}
以上代码是我所有的。我发现不可能创建任何形状或形式的registrationNo类的实例。您无法从不在默认包中的类访问默认包中的类。这就是您永远不应该将类放入默认包的原因之一。您的测试驻留在名为
testing
的包中。我假设您的注册号类位于其他包中。因此,您必须将其导入测试:
import your.package.RegistrationNo;
请提供有关您收到的错误的更多信息。并格式化您的代码。目前很难阅读。我得到的错误是注册号无法解析为类型。请注意,我在其他类中使用了该类的实例,没有问题,这是一个完整的最小示例,再现了该问题。它应该包含两个相关的类。还要添加完整的测试代码。也许您缺少了一个import
语句?是的,非常感谢,我刚刚意识到我在创建类时犯了一个错误,因为它们在默认包中。所以我从不同的包中做了两件事
import your.package.RegistrationNo;