Эй, у меня есть вопрос об утверждениях и насмешках на java

#java #junit #mockito #assertion

#Ява #джунит #мокито #утверждение

Вопрос:

 import com.example.currence_exchange.Interfaces.Currency_Interface; import com.example.currence_exchange.Interfaces.OldRates_Interface; import com.example.currence_exchange.Interfaces.Rates_Interface; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; import org.mockito.junit.jupiter.MockitoExtension;  @ExtendWith(MockitoExtension.class) class CurrencyExchange_LogicTest {   @Mock  Currency_Interface currency_interface;  @Mock  Rates_Interface rates_interface;  @Mock  OldRates_Interface Oldrates_interface;  @InjectMocks  CurrencyExchange_Logic exchange_logic;    @Test  void currencyJsonTest() {  Assertions.assertNotNull(currency_interface);  Assertions.assertNotNull(rates_interface);  Assertions.assertNotNull(Oldrates_interface);  Assertions.assertNotNull(exchange_logic);   } }  

ПОМ

 lt;dependencygt;  lt;groupIdgt;junitlt;/groupIdgt;  lt;artifactIdgt;junitlt;/artifactIdgt;  lt;versiongt;4.12lt;/versiongt;  lt;scopegt;testlt;/scopegt;  lt;/dependencygt;  lt;dependencygt;  lt;groupIdgt;org.junit.jupiterlt;/groupIdgt;  lt;artifactIdgt;junit-jupiter-paramslt;/artifactIdgt;  lt;versiongt;5.8.1lt;/versiongt;  lt;scopegt;testlt;/scopegt;  lt;/dependencygt;  lt;dependencygt;  lt;groupIdgt;org.junit.platformlt;/groupIdgt;  lt;artifactIdgt;junit-platform-runnerlt;/artifactIdgt;  lt;versiongt;1.2.0lt;/versiongt;  lt;scopegt;testlt;/scopegt;  lt;/dependencygt;  lt;dependencygt;  lt;groupIdgt;org.junit.vintagelt;/groupIdgt;  lt;artifactIdgt;junit-vintage-enginelt;/artifactIdgt;  lt;versiongt;5.8.1lt;/versiongt;  lt;scopegt;testlt;/scopegt;  lt;/dependencygt;  lt;!-- https://mvnrepository.com/artifact/org.mockito/mockito-all --gt;  lt;dependencygt;  lt;groupIdgt;org.junit.jupiterlt;/groupIdgt;  lt;artifactIdgt;junit-jupiter-enginelt;/artifactIdgt;  lt;versiongt;5.8.1lt;/versiongt;  lt;scopegt;testlt;/scopegt;  lt;/dependencygt;  lt;dependencygt;  lt;groupIdgt;org.mockitolt;/groupIdgt;  lt;artifactIdgt;mockito-corelt;/artifactIdgt;  lt;versiongt;2.21.0lt;/versiongt;  lt;scopegt;testlt;/scopegt;  lt;/dependencygt;  

java.lang.Ошибка noSuchMethod: ‘org.mockito.плагины.MockitoLogger org.mockito.внутренняя конфигурация.Плагины.Плагины.getMockitoLogger()’
в org.mockito.junit.jupiter.MockitoExtension.beforeach(MockitoExtension.java:152)
в org.junit.jupiter.engine.дескриптор.Тестметодтестдескриптор.lambda$invokeBeforeEachCallbacks$2(TestMethod testdescriptor.java:163)
в org.junit.jupiter.engine.дескриптор.Тестметодтестдескриптор.lambda$invokeBeforeMethodsOrCallbacksUntilExceptionOccurs$6(тестовый метод testdescriptor.java:199)
в org.junit.платформа.движок.поддержка.иерархическая.ThrowableCollector.выполнить(ThrowableCollector.java:73)
в org.junit.jupiter.engine.дескриптор.TestMethodTestDescriptor.invokeBeforeMethodsOrCallbacksUntilExceptionOccurs(TestMethodTestDescriptor.java:199)
в org.junit.jupiter.engine.дескриптор.TestMethod testdescriptor.invokeBeforeEachCallbacks(TestMethod testdescriptor.java:162)
в org.junit.jupiter.engine.дескриптор.TestMethod testdescriptor.выполнить(TestMethod testdescriptor.java:129)
в org.junit.jupiter.engine.дескриптор.TestMethod testdescriptor.выполнить(TestMethod testdescriptor.java:66)
в org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
в org.junit.платформа.движок.поддержка.иерархическая.ThrowableCollector.инструкции execute(ThrowableCollector.Ява:73)
в org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
в орг.в JUnit.платформа.двигатель.поддержка.иерархические.Узел.вокруг(узел.Ява:137)
в org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
в org.junit.платформа.движок.поддержка.иерархическая.ThrowableCollector.выполнить(ThrowableCollector.java:73)
в org.junit.platform.engine.поддержка.иерархическая.NodeTestTask.executeRecursively(NodeTestTask.java:138)
в org.junit.platform.engine.поддержка.иерархическая.NodeTestTask.выполнить(NodeTestTask.java:95)
на java.base/java.util.ArrayList.forEach(ArrayList.java:1508)
в org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
в org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
в org.junit.платформа.движок.поддержка.иерархическая.ThrowableCollector.инструкции execute(ThrowableCollector.Ява:73)
в org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
в орг.в JUnit.платформа.двигатель.поддержка.иерархические.Узел.вокруг(узел.Ява:137)
в org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
в org.junit.платформа.движок.поддержка.иерархическая.ThrowableCollector.выполнить(ThrowableCollector.java:73)
в org.junit.platform.engine.поддержка.иерархическая.NodeTestTask.executeRecursively(NodeTestTask.java:138)
в org.junit.platform.engine.поддержка.иерархическая.NodeTestTask.выполнить(NodeTestTask.java:95)
на java.base/java.util.ArrayList.forEach(ArrayList.java:1508)
в org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
в org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
в org.junit.платформа.движок.поддержка.иерархическая.ThrowableCollector.инструкции execute(ThrowableCollector.Ява:73)
в org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
в орг.в JUnit.платформа.двигатель.поддержка.иерархические.Узел.вокруг(узел.Ява:137)
в org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
в org.junit.платформа.движок.поддержка.иерархическая.ThrowableCollector.инструкции execute(ThrowableCollector.Ява:73)
в org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
в орг.в JUnit.платформа.двигатель.поддержка.иерархические.NodeTestTask.инструкции execute(NodeTestTask.Ява:95)
в org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorservice.submit(SameThreadHierarchicalTestExecutorservice.java:35)
в орг.в JUnit.платформа.двигатель.поддержка.иерархические.HierarchicalTestExecutor.выполнить(HierarchicalTestExecutor.java:57)
в org.junit.платформа.движок.поддержка.иерархическая.HierarchicalTestEngine.выполнить(HierarchicalTestEngine.java:54)
в org.junit.platform.launcher.core.EngineExecutionOrchestrator.выполнить(EngineExecutionOrchestrator.java:107)
в org.junit.platform.launcher.core.EngineExecutionOrchestrator.выполнить(EngineExecutionOrchestrator.java:88)
в org.junit.platform.launcher.core.Конструктор-испытатель.lambda$выполнить$0(EngineExecutionOrchestrator.java:54)
в org.junit.platform.launcher.core.Конструктор-испытатель.С понятными потоками(EngineExecutionOrchestrator.java:67)
в org.junit.platform.launcher.core.EngineExecutionOrchestrator.выполнить(EngineExecutionOrchestrator.java:52)
в org.junit.platform.launcher.core.DefaultLauncher.выполнить(DefaultLauncher.java:114)
в org.junit.platform.launcher.core.DefaultLauncher.выполнить(DefaultLauncher.java:86)
в org.junit.platform.launcher.core.DefaultLauncherSession$Делегирование launcher.выполнить(DefaultLauncherSession.java:86)
в org.junit.platform.launcher.core.SessionPerRequestLauncher.выполнить(SessionPerRequestLauncher.java:53)
в com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:71)
в com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
в com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:221)
в com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
Подавлено: java.lang.Исключение NullPointerException
в org.mockito.junit.jupiter.MockitoExtension.afterEach(MockitoExtension.java:184)
в org.junit.jupiter.engine.дескриптор.Тестметодтестдескриптор.lambda$invokeAfterEachCallbacks$12(TestMethod testdescriptor.java:257)
в орг.юнит.юпитер.двигатель.дескриптор.Тестметодтестдескриптор.lambda$invokeAllAfterMethodsOrCallbacks$13(TestMethodTestDescriptor.java:273)
в org.junit.platform.engine.support.иерархический.ThrowableCollector.выполнить(ThrowableCollector.java:73)
в org.junit.jupiter.engine.дескриптор.Тестметодтестдескриптор.lambda$invokeAllAfterMethodsOrCallbacks$14(TestMethodTestDescriptor.java:273)
на java.base/java.util.ArrayList.forEach(ArrayList.java:1508) в орг.юнит.юпитер.двигатель.дескриптор.TestMethodTestDescriptor.invokeAllAfterMethodsOrCallbacks(TestMethodTestDescriptor.java:272)
в орг.юнит.юпитер.двигатель.дескриптор.TestMethod testdescriptor.Обратные вызовы invokeaftereach(TestMethod testdescriptor.java:256)
в org.junit.jupiter.engine.дескриптор.TestMethod testdescriptor.выполнить(TestMethod testdescriptor.java:141)
… еще 45

Почему я получаю эту ошибку? И почему, несмотря на импорт утверждений junit, я не могу просто писать assertNotNull(); , но должен писать Assertions.assertNotNull() ? Почему я не могу использовать, например when().then() , из mockito (сообщение не может разрешить метод «когда» в «CurrencyExchange_LogicTest»). Может быть, это из-за зависимостей, с ними что-то не так?

Комментарии:

1. Вам нужен статический импорт, если вы хотите избежать включения имени класса. Это единственный вопрос здесь?

2. вам нужно будет импортировать статические данные … Утверждения.assertNotNull, чтобы не использовать утверждения. когда дело доходит до оператора when (), не могли бы вы привести примеры его вызова?

3. @Крис, ваш ответ и ответ Натанса тоже помогли с проблемой mockito, спасибо

4. @NathanHughes спасибо

Ответ №1:

Ошибка noSuchMethod обычно указывает на несоответствие версий jar в ваших зависимостях. Вам необходимо убедиться, что ваши зависимости Maven используют комбинацию поддерживаемых версий, а не случайную комбинацию.

И почему, несмотря на импорт утверждений junit, я не могу просто написать assertNotNull(); но должен писать утверждения.assertNotNull()?

Вам нужно использовать статический импорт, подобный этому:

 import static org.junit.Assert.assertNotNull;  

Почему я не могу использовать, например, when().затем() из mockito (сообщение Не может разрешить метод «когда» в «CurrencyExchange_LogicTest»)

Вам нужен еще один статический импорт для Mockito.when() :

 import static org.mockito.Mockito.when;  

Комментарии:

1. спасибо, удалил некоторые неиспользуемые зависимости mockito из pom, и это сработало!