我想测试一个使用Junit的私有构造函数的注册号类。由于测试私有构造函数的设计很糟糕,因此我正在测试getInstance方法。但是,我有语法错误,如:Junit测试getInstance方法
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;
}
任何人都可以提供关于如何测试呢?作为测试类,我也没有做什么,说实话其它的代码below.to是提醒说实话我不知道前进的道路。
package testing;
import static org.junit.Assert.*;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import org.junit.Test;
public class RegistrationNoTest {
@Test
public void test() {
final int number = 50;
final char letter = 'a';
final String stringRep;
RegistrationNoTest test = new RegistrationNoTest();
//final RegistrationNo reg = RegistrationNo.getInstance();
}
}
上面的代码是我所有的。我发现无法以任何形状或形式创建registrationNo类的实例。
请提供有关您收到的错误的更多信息。并格式化您的代码。目前很难阅读。 –
我得到的错误是RegistrationNo无法解析为类型。请注意,我在其他课程中没有任何问题地使用过该课程的实例。 – Jazztheman
发布了一个完整的重现问题的简单示例。它应该包含两个相关的类。 –