Java 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

我正在尝试使用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;
    }

以上代码是我所有的。我发现不可能创建任何形状或形式的registrationNo类的实例。

您无法从不在默认包中的类访问默认包中的类。这就是您永远不应该将类放入默认包的原因之一。

您的测试驻留在名为
testing
的包中。我假设您的
注册号
类位于其他包中。因此,您必须将其导入测试:

import your.package.RegistrationNo;

请提供有关您收到的错误的更多信息。并格式化您的代码。目前很难阅读。我得到的错误是注册号无法解析为类型。请注意,我在其他类中使用了该类的实例,没有问题,这是一个完整的最小示例,再现了该问题。它应该包含两个相关的类。还要添加完整的测试代码。也许您缺少了一个
import
语句?是的,非常感谢,我刚刚意识到我在创建类时犯了一个错误,因为它们在默认包中。所以我从不同的包中做了两件事
import your.package.RegistrationNo;