java .lang.IllegalStateException при попытке создания модульных тестов с помощью randoop - PullRequest
1 голос
/ 11 января 2020

Моя цель - создать базовые c модульные тесты для большого количества унаследованного кода, который мы переносим на новую платформу. (Я знаю, что юнит-тесты бесполезны, но иногда это бывает). Мы блокируем только процент покрытия, поэтому лучше использовать go с базовыми c тестами в тех методах, которые нам нужны, поэтому использование автоматически сгенерированных тестов будет наиболее эффективной стратегией.

Я нашел RAND OOP https://randoop.github.io/randoop/ и начните пытаться заставить его работать. Однако я обнаружил проблему, которая частично связана с моим почти нулевым знанием java (я сделал нечто подобное в. net всего несколькими щелчками мыши и менее чем за 4 часа).

I Я следую официальному руководству здесь https://randoop.github.io/randoop/manual/index.html#getting_randoop и видео этого парня, который просто заставляет его работать https://www.youtube.com/watch?v=nPdb-72-EJY.

The Problem

Проще говоря, проблема заключается в следующей ошибке, когда я запускаю эту команду

java -classpath 'C:\randoop-4.2.1\bin;C:\randoop-4.2.1\randoop-all-4.2.1.jar' randoop.main.Main gentests --testclass=ClassName

> Throwable thrown while handling command:
> java.lang.IllegalStateException: Cannot find the Java compiler. Check
> that classpath includes tools.jar java.lang.IllegalStateException:
> Cannot find the Java compiler. Check that classpath includes tools.jar
>         at randoop.compile.SequenceCompiler.<init>(SequenceCompiler.java:64)
>         at randoop.compile.SequenceCompiler.<init>(SequenceCompiler.java:48)
>         at randoop.condition.SpecificationCollection.<init>(SpecificationCollection.java:82)
>         at randoop.condition.SpecificationCollection.create(SpecificationCollection.java:102)
>         at randoop.main.GenTests.handle(GenTests.java:279)
>         at randoop.main.Main.nonStaticMain(Main.java:66)
>         at randoop.main.Main.main(Main.java:30)
> 
> Randoop failed. No sequences generated.

что это выше?

Я запускаю команду с консоли, расположенной в папке bin в rand oop " папка установки.

C: \ rand oop -4.2.1 \ bin - это папка, в которую я распаковал файл Rand oop. Какая-то странная вещь заключается в том, что ни одна из загрузок версии Rand oop не содержит папку bin, поэтому я создал ее произвольно. Я не знаю, правильно это или неправильно, но я только что сделал это.

В начале видео запускает следующую команду, которая действительно является базовой c, и она работала нормально в моей системе.

java -classpath .\randoop-4.2.1\randoop-all-4.2.1.jar randoop.main.Main help gentests 

Есть также текстовый файл с именем myclasslist, я не понимаю, почему эти парни никогда не говорят. У меня его нет.

У меня установлено Java 8 в c:\program files\jdk1.8.0_231, а переменные Paths и environment установлены следующим образом.

Environment variables

EDIT

В видео у парня есть файл. java в папке rand oop root. У меня нет, так как у меня есть реальный проект в Intellij. я просто нашел файл classs и скопировал его в папку bin.

1 Ответ

0 голосов
/ 11 января 2020

Ваш скриншот не показывает переменную среды System PATH.

Дважды проверьте фактическое значение PATH. Он может указывать на JRE вместо JDK, и System PATH имеет приоритет над User PATH.

Rand oop требует JDK на работу, а не JRE.

Попробуйте запустить:

"c:\program files\jdk1.8.0_231\bin\java.exe" -classpath 'C:\randoop-4.2.1\bin;C:\randoop-4.2.1\randoop-all-4.2.1.jar' randoop.main.Main gentests --testclass=ClassName

Если это работает, проблема в том, что значение по умолчанию java.exe в вашем PATH от JRE, а не от JDK.

Обратите внимание, что аргумент -classpath указывает на файлы jar или каталоги с файлами .class, а не на отдельные файлы .class. См. Документацию .

Указанная выше команда должна работать, если ваш файл ClassName.class находится в C:\randoop-4.2.1\bin.

См. Связанный ответ для JDK PATH конфигурация.

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