2017-03-12 10 views
-2

Junitを使用してプライベートコンストラクタを持つ登録番号クラスをテストしようとしています。プライベートコンストラクタをテストするのは悪い設計なので、getInstanceメソッドをテストしています。ただし、次のような構文エラーがあります。getInstanceメソッドをテストするJunit

final RegistrationNo reg = RegistrationNo.getInstance(); 

以下は完全なRegistrationNoクラスです。

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クラスのインスタンスを作成することが不可能であることを発見しています。

+1

エラーの詳細については、こちらからお送りください。コードも同様にフォーマットします。現時点では読むのは難しいです。 –

+0

私は、RegistrationNoをタイプに解決できないというエラーが発生しました。他のクラスで問題のないそのクラスのインスタンスを使用したことを心配してください。 – Jazztheman

+0

問題を再現した完全な最小例を投稿してください。関連する2つのクラスを含む必要があります。 –

答えて

0

デフォルトパッケージに含まれていないクラスから、デフォルトパッケージに含まれるクラスにアクセスすることはできません。これは決してあなたが決してデフォルトパッケージにクラスを入れない理由の1つです。

0

あなたのテストはtestingというパッケージにあります。私はあなたのRegistrationNoクラスが他のパッケージに入っていると仮定します。したがって、テストにインポートする必要があります。

import your.package.RegistrationNo; 
関連する問題