Тесты JUnit не работают в Eclipse
Это снимок редактора Eclipse. Вы можете увидеть тест и вкладку JUnit. Когда я пытаюсь запустить тест, появляется сообщение "Прервано".
![enter image description here]()
Кто-нибудь знает, что здесь происходит?
Ответы
Ответ 1
Одна из возможностей заключается в том, что бегун Eclipse JUnit путается наличием метода main
и работает, а не с методами тестирования.
Попробуйте прокомментировать метод main
. Это не должно быть вообще, ИМО.
(Кстати, основной метод не подходит мне. Я бы подумал, что он будет создавать экземпляр TestSuite
с классами unit test в качестве параметров, но вы, кажется, даете ему класс под Это не будет иметь никаких "тестовых" методов, которые объясняли бы, почему тесты не выполняются...)
Ответ 2
Как уже упоминалось, удалите основной метод, может быть, helpt. Любая конкретная причина для расширения от TestCase, которая является Juni3, если я правильно помню? Вы попробовали Junit 4 с помощью аннотации @Test
например:
@Test
public void testSomething() {
//you stuff
}
Ответ 3
Не уверен, что ваша проблема уже решена.
У меня была аналогичная проблема, которая была решена, когда я исправил Project
→ Properties
→ Java Compiler
→ JDK Compliance settings
.
У меня был конфликт между 1.5 и 1.6. Когда я вернулась назад к 1.5 (которая была активной активной JRE), мой JUnits снова начал работать.
Ответ 4
У меня была такая же проблема, когда я впервые добавил файл jar junit в путь сборки.
Убедитесь, что вы добавляете файл junit.jar в раздел "Путь сборки Java → путь к классу", а не в раздел "путь к модулю".
Ответ 5
Вручную определить поведение запуска: Щелкните правой кнопкой мыши → Запустить как → Запустить конфигурации:
Затем вы можете определить все детали тестового примера: тестовый класс, методы тестирования, путь к классам, версию junit, аргументы JVM и т.д.
Ответ 6
Когда я не видел никаких тестов, запускаемых, я открыл консоль и увидел следующую ошибку:
java.lang.UnsupportedClassVersionError: junit/framework/Test (Unsupported major.minor version 49.0)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadTestLoaderClass(RemoteTestRunner.java:328)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createRawTestLoader(RemoteTestRunner.java:318)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createLoader(RemoteTestRunner.java:313)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.defaultInit(RemoteTestRunner.java:291)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.init(RemoteTestRunner.java:212)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
После дальнейших исследований я понял, что рамки junit, которые я использовал, были построены против 1.6 jre, и я строю свои модульные тесты против 1,3 jre. Когда я построил модульные тесты против 1.6, мои тесты закончились. В качестве альтернативы, я полагаю, я мог бы построить (или найти) junit против 1.3, и я мог бы быть в хорошей форме. Я пошел по пути наименьшего сопротивления.
Ответ 7
Случилось, когда у меня было две банки junit на пути к классам. Одна банка была скрыта внутри автономного сервера selenium. Я исправил проблему, удалив другую банку из пути к классам и позволяя среде выполнения использовать junit jar в автономном сервере selenium. Я не мог найти никаких сообщений в консоли о конфликте классов или предупреждении о версии Java.
Ответ 8
В моем случае было то, что я сделал рефакторинг, а .classpath не обновлялся, а на консоли показывалась ошибка о некорректном классе. После обновления файла classpath все снова заработало.
Ответ 9
Не уверен, что это помогает, но в моем случае мне пришлось обновить конфигурацию проекта Maven- > update Project до того, как Junit наконец-то начала отвечать
Ответ 10
В моем случае я использовал внутренний класс, который не был идентифицирован как подходящий для тестов. Исправление заключалось в том, чтобы сделать этот класс статическим внутренним классом следующим образом:
public class MyClass { //... class I wanted to test
}
Этот внутренний класс (т.е. в том же файле) используется для тестирования MyClass, но eclipse не находит его... если он не является статическим.
public static class MyClassTest { // ....
}
Ответ 11
Убедитесь, что у вас нет другого процесса блокировки выполнения. В моем случае рабочее пространство здания спало, блокируя выполнение всех юнитов.