Пересмешивание Один и тот же метод несколько раз возвращает ноль для второго вызова - PullRequest
0 голосов
/ 28 января 2020

Я должен написать jUnits для своего кода, где мы выбираем данные из разных индексов, используя тот же метод из базы данных lucene. Мне нужно смоделировать метод, который выполняет запрос для извлечения данных, я передаю имя индекса как часть аргументов метода. Первый вызов смоделирован, как и ожидалось, но он возвращает ноль для второго вызова, что приводит к NPE для моего кода.

doReturn(responseIndexA).when(emailSenderDao).getQueryResults(Mockito.any(BoolQueryBuilder.class), Mockito.eq("IndexA"),
                Mockito.anyInt(), Mockito.anyInt(), Mockito.any(String[].class), Mockito.any(String[].class));

        doReturn(responseIndexB).when(daoObject).getQueryResults(Mockito.any(BoolQueryBuilder.class), Mockito.eq("IndexB"),
                Mockito.anyInt(), Mockito.anyInt(), Mockito.any(String[].class), Mockito.any(String[].class));

        doReturn(responseIndexC).when(daoObject).getQueryResults(Mockito.any(BoolQueryBuilder.class), Mockito.eq("IndexC"),
                Mockito.anyInt(), Mockito.anyInt(), Mockito.any(String[].class), Mockito.any(String[].class));

Я также пытался использовать когда (вызов метода) .thenReturn (ответ), но получил та же проблема. Также пробовал

`

when(daoObject.getQueryResults(Mockito.any(BoolQueryBuilder.class), Mockito.anyString(),
                Mockito.anyInt(), Mockito.anyInt(), Mockito.any(String[].class), Mockito.any(String[].class))).
        thenAnswer(inv -> {
            String indexName = (String) inv.getArguments()[1];
            if(indexName.equalsIgnoreCase("IndexA")) {
                return responseIndexA;
            }else if(indexName.equalsIgnoreCase("IndexB")) {
                return responseIndexB;
            } else {
                return responseIndexC;
            }
        });`

Когда я запускаю отдельный класс, он отлично работает во всех случаях, но когда он запускается во время установки maven или я выполняю покрытие как jUnits, я получаю NPE вопрос. Плагин Jacoco `

<plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>${jacoco.maven.plugin.version}</version>
                <configuration>
                    <excludes>
                        <exclude>{packages}</exclude>
                    </excludes>
                </configuration>
                <executions>
                    <execution>
                        <id>jacoco-initialize</id>
                        <phase>initialize</phase>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                        <configuration>
                            <propertyName>jacoco.agent.argLine</propertyName>
                        </configuration>
                    </execution>
                    <execution>
                        <id>jacoco-report</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>report</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>`

JUnit версия - 4.12

...