Модульные тесты с Mocks для Mastermind и класса Random () - PullRequest
0 голосов
/ 04 марта 2020

Мне нужно запрограммировать Mastermind, и я сделал это с помощью случайного ключа. Теперь мне нужно проверить их. это легко для методов управления в моем Helperclass, но я не знаю, как на самом деле смоделировать или протестировать метод с помощью Random Object из класса Random или метод с использованием Object из класса сканера здесь код:

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;
    }

Thats метод Random в HelperClass Как вы там делаете объект Mock и тестируете

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;
    }

Моя беспомощная попытка была в классе Test для метода с объектом Random ()

    @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);


    }


}

Я не знаю, как go или вообще понял, как это на самом деле работает, пожалуйста, помогите мне и попытайтесь найти краткое решение для теста. хорошо, если это просто метод randomKey. Я использую Intellij Idea в качестве IDE, кстати.

1 Ответ

0 голосов
/ 04 марта 2020

Проблема в том, что вы каждый раз создаете Случайный объект в своем методе. Вот почему макет не работает. Попробуйте сделать объект Random в качестве поля класса private Random random = new Random();, а затем просто используйте random.nextInt(). Тогда это должно работать для вас

...