При тестировании с JUnit Jupyter, в частности, VSCode возвращает ошибку java.lang.NoClassDefFoundError: org/junit/runner/manipulation/Filter в консоли отладки, в то время как результаты теста на вкладке показано: Тестовый запуск не записал никаких выходных данных. (вероятно, тесты не выполняются из-за ошибки).
Я пробовал выполнить все пути, которые предоставляет VSCode, запускаю все тесты, всего один, и всегда получаю одну и ту же ошибку.
Как видите, мой проект очень прост (только для тестирования) и имеет стандартная структура.

Чтобы убедиться, что я не делаю ничего плохого, я создал класс для запуска тесты вручную (TestRunner.java), и когда я его запустил, все прошло отлично. Важно сказать, что я создал этот класс после получения ошибок, поэтому он не мешает.
Код: Выделить всё
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
public class TestRunner {
public static void main() {
Result result = JUnitCore.runClasses(TesteCalculadora.class);
int count;
String msg;
long time = result.getRunTime();
System.out.println("\n\nRESULTADO DOS TESTES");
System.out.println("Tempo: " + time + " ms");
if (result.wasSuccessful()) {
count = result.getRunCount();
if (count == 1)
msg = count + " teste executado com sucesso";
else
msg = count + " testes executados com sucesso";
} else {
count = result.getFailureCount();
if (count == 1)
msg = count + " teste falhou";
else
msg = count + " testes falharam";
}
System.out.println(msg);
for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
}
}
Код: Выделить всё
RESULTADO DOS TESTES
Tempo: 6 ms
2 testes executados com sucesso
Код: Выделить всё
java.lang.NoClassDefFoundError: org/junit/runner/manipulation/Filter
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:383)
at java.base/java.lang.Class.forName(Class.java:376)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadTestLoaderClass(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createRawTestLoader(RemoteTestRunner.java:372)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createLoader(RemoteTestRunner.java:367)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.defaultInit(RemoteTestRunner.java:311)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.init(RemoteTestRunner.java:226)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:210)
Caused by: java.lang.ClassNotFoundException: org.junit.runner.manipulation.Filter
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 9 more
Я попробовал несколько решений, которые нашел на этом форуме, но они также не увенчались успехом.
Я пробовал запускать тесты через интерфейс IDE. Обратите внимание, что VSCode прекрасно распознает тесты и правильно размещает все индикаторы и маркировку.

Но когда я нажимаю на любое из мест, где должны запускаться тесты, я получаю упомянутую ошибку.
Подробнее здесь: https://stackoverflow.com/questions/793 ... -org-junit