тестирование Java-интерфейса - PullRequest
0 голосов
/ 24 февраля 2010

в тесте Java у меня есть:

package Tester.GUI.api
public class Test1{-----}

в ".bat":

<path to java> -classpath<all jar defined in the classpath separated by ";"> org.junit.runner.JUnitCore Tester.GUI.api.Test1

когда я запускаю ".bat", у меня есть следующее:

JUnit version 4.6
Could not find class: Tester.GUI.api.Test1
Time: 0,203

OK (0 tests)

Я проверил jar-файлы, опечатка, но не нашел причину кто-нибудь может помочь, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 25 февраля 2010

Он говорит, что класс, который он не может найти, - Tester.GUI.api.Test1. Из какого каталога вы запускаете тест, и в каком каталоге находится ваш Test1 код?

Если вы установите переменную -classpath, вам также может понадобиться включить текущий каталог в ваш classpath. Итак, если ваша оригинальная команда была

java -classpath C:\foo.jar;D:\bar1\bar2.jar org.junit.runner.JUnitCore Tester.GUI.api.Test1

вы можете добавить текущий каталог в ваш classpath, добавив ;. в конец вашей опции -classpath, например:

java -classpath C:\foo.jar;D:\bar1\bar2.jar;. org.junit.runner.JUnitCore Tester.GUI.api.Test1

Это будет работать, если класс Test1 находится в каталоге Tester\GUI\api в текущем каталоге.

С настройкой classpath в Java хитроумно то, что вы не хотите указывать каталог, в котором находятся ваши фактические файлы .java, но вместо этого вы хотите указать каталог, в котором вы можете найти каталоги, названные по имени пакеты в вашем коде.

Например, если я скомпилировал класс Foo в пакете bar.baz, то у меня должен быть файл с именем Foo.class в каталоге с именем baz в другом каталоге с именем bar. Если я хочу включить Foo в мой classpath, и если Foo.class расположен в C:\Users\Joe\Code\bar\baz\Foo.class, тогда я должен либо запустить

java -classpath C:\Users\Joe\Code [main class goes here]

или я должен изменить каталог на C:\Users\Joe\Code и запустить

java -classpath . [main class goes here]
0 голосов
/ 25 февраля 2010

Опция -classpath должна принимать набор директорий и / или jar-файлов. В настоящее время они отсутствуют, поэтому ваш основной класс (JUnitCore) используется в качестве пути к классам, а Test1 используется в качестве основного класса. Я предполагаю, что вы хотите JUnitCore в качестве основного класса и Test1 в качестве аргумента.

Попробуйте что-то вроде этого (подставив фактические имена jar-файлов, которые вы используете для jar-file1, jar-file2):

java -classpath <jar-file1.jar>;<jar-file2.jar> org.junit.runner.JUnitCore Tester.GUI.api.Test1

Edit: Предполагая, что файлы JAR указаны правильно, сообщение об ошибке указывает на то, что класс Test1 отсутствует в пути к классам. Если вы используете IDE, вам нужно найти выходной каталог для компиляции (например, в Eclipse это <project>/bin по умолчанию). В этом каталоге вы найдете другие каталоги со структурой Tester/GUI/api. Файл с именем Test1.class будет находиться в каталоге api. Именно этот выходной каталог необходимо добавить в путь к классам (то есть, над структурой Tester/GUI/api).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...