2013-12-13 2 views
5

Прежде всего, Я просмотрел все подобные вопросы о переполнении стека, и пока ничего не работало для меня. Просто пытаюсь заставить JUnit работать с простым примером из книги JUnit in Action 2nd Edition от Peter Tahchiev.Не удалось найти класс в JUnit 4.11

Calculator.java

public class Calculator { 
    public double add(double number1, double number2) { 
     return number1 + number2; 
    } 
} 

CalculatorTest.java

import static org.junit.Assert.assertEquals; 
import org.junit.Test; 

public class CalculatorTest { 

    @Test 
    public void testAdd() { 
     Calculator calc = new Calculator(); 
     double result = calc.add(1,1); 
     assertEquals(2, result,0); 
    } 
} 

Моя папка: Current Folder

компилировать с:

javac -cp junit-4.11.jar *.java 

Моей папки после компиляции: Current Folder after compiling

Я пытаюсь запустить тест с:

java -cp junit-4.11.jar;hamcrest-core-1.3.jar;. org.junit.runner.JUnitCore CalculatorTest 

Это мой выход:

Output

Когда я пытаюсь запустить отдельные классы в JRE находит их, но не вызывает никакой ошибки основного метода, которая ожидается:

java Calculator 
java CalculatorTest 

выходы (которые, как ожидалось, но он нашел классы): Error 1 Error 2

Любые идеи, как я могу получить JUnit/что он должен себя вести?

[EDIT]
Я бегу все команды в C:\Users\Zach\Documents\docs\Code\JUnit
скриншоты выше той же папке.
Я использую jdk1.7.0_45 и jre7
Я использую Windows 7 Professional N 64 - бит

я выполнил команду Java с помощью -verbose: класс, и не было никаких ошибок, кроме той, на линии 426, который видел ниже: verbose error

+0

Я набрал точные команды, которые вы указали, с указанными вами файлами и работает в Windows. Я заменил; с: и запускал его на Linux, и он работал отлично. Что-то должно быть специфично для вашей среды. Какой каталог вы используете при запуске второй команды (java-команды)? – Pace

+0

Добавлена ​​директория, jdk, jre и OS – Gander7

+0

Вы можете попробовать работать с классом -verbose: и посмотреть, что это указывает на вас. – Pace

ответ

0

Увлекательный. В любом случае, похоже, у вас есть junit-4.11.jar в lib/ext в вашей JRE. Это место предпочитает путь к классам, а классы, загруженные в этот каталог, загружаются в отдельный загрузчик классов.

Этот класс загрузчика lib/ext не может видеть класс, загруженный загрузчиком классов classpath, и, таким образом, JUnit не может видеть ваш код. Если вы используете Junit из командной строки таким образом, лучше не ставить банку в вашу папку lib/ext. Если вы выполняли его программно (например, JUnitCore.runClasses (...)), вы могли бы загружать свои классы с помощью обычного загрузчика классов и передавать их в JUnit в укромном загрузчике классов, и все было бы хорошо.

Таким образом, короткий ответ, вероятно, заключается в том, чтобы удалить банку junit из папки lib/ext, если вы знаете, почему она была там в первую очередь, и эта причина больше недействительна.

+0

Я удалил его, сбросил все и сделал все. оно работает. Выключите питание, включите питание. – Gander7

Смежные вопросы