Java 对Mastermind和Random()类进行模拟的单元测试

Java 对Mastermind和Random()类进行模拟的单元测试,java,unit-testing,random,mocking,mockito,Java,Unit Testing,Random,Mocking,Mockito,我需要给智囊团编程,我用一个随机键完成了。我现在需要对它们进行单元测试。 在我的Helperclass中,控制方法很简单,但我不知道如何使用Random类中的随机对象或使用Scanner类中的对象的方法来真正模拟或测试该方法代码: public int[] randomKey(){ int[] key = new int[4]; Random random1 = new Random(); for(int i = 0;i < 4;i++) {

我需要给智囊团编程,我用一个随机键完成了。我现在需要对它们进行单元测试。 在我的Helperclass中,控制方法很简单,但我不知道如何使用Random类中的随机对象或使用Scanner类中的对象的方法来真正模拟或测试该方法代码:

public int[] randomKey(){
        int[] key = new int[4];
        Random random1 = new Random();
        for(int i = 0;i < 4;i++) {
            key[i] = random1.nextInt(6);//Random Zahl for the Key
    }
        return key;
    }
我不知道该怎么做,也不知道该怎么做 请帮我找到一个简短的测试解决方案。好吧,如果只是随机键方法。
顺便说一句,我使用Intellij Idea作为IDE。

问题是,您每次都在用maethod创建随机对象。这就是mock不起作用的原因。尝试将随机对象设置为类
private Random Random=new Random()的字段
然后只需使用
random.nextInt()
。那它应该对你有用

private String[] guess(){ //Input from guessing
        int k = 1;
        Scanner eingabewert = new Scanner(System.in);
        String[] guess = new String[4];
        for(int i = 0; i < 4;i++){
            k = 1;
            while(k==1) {
                System.out.println("Jetzt die " + (i + 1) + ".te Farbe eingeben ");
                guess[i] = eingabewert.nextLine();
                if(guess[i].equals("red")||guess[i].equals("blue")||guess[i].equals("yellow")||guess[i].equals("green")||guess[i].equals("purple")||guess[i].equals("brown")){
                    k = 0;
                }
            }
        }
        return guess;
    }
    @Mock
    private java.util.Random random;
    @InjectMocks
    private HelperClass helperClass;
    @Before
    public void setUp() throws Exception {
        MockitoAnnotations.initMocks(this);
    }
    @Test
            void testRandomKey(){
            Random mockedItem = Mockito.mock(Random.class);
            when(mockedItem.nextInt(6)).thenReturn(1);


    }


}