#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, и это сработало!