私の目的は、新しいプラットフォームに移行する多くのレガシー コードに対して非常に基本的な単体テストを生成することです。(単体テストがこのように役に立たないことは知っていますが、時々発生します)。パーセンテージをカバーするためにブロックされているだけなので、必要なメソッドで基本的なテストを行うのは良いことです。そのため、自動生成されたテストを使用することが最も効率的な戦略になります.
RANDOOP https://randoop.github.io/randoop/を見つけて、それを機能させようとし始めました。しかし、問題が見つかりました。これは、Java の知識がほとんどないことが原因の 1 つです (.net で、数回クリックするだけで 4 時間もかからずに同様のことを行いました)。
ここの公式マニュアルに従っていますhttps://randoop.github.io/randoop/manual/index.html#getting_randoopと、それを機能させるこの男のビデオhttps://www.youtube.com/watch?v =nPdb-72-EJY .
問題
このコマンドを実行すると、問題は次のエラーになります。
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.
これは何ですか?
randoop の「インストール」フォルダーの bin フォルダーに配置されたコンソールからコマンドを実行します。
C:\randoop-4.2.1\bin は、Randoop ダウンロードを解凍したフォルダーです。奇妙なことに、Randoop バージョンのダウンロードには bin フォルダーが含まれていないため、任意に作成しました。それが正しいか間違っているかはわかりませんが、私はただそうしました。
ビデオの冒頭で、次のコマンドを実行します。これは非常に基本的なもので、私のシステムでは問題なく動作しました。
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
おり、パスと環境変数は次のように設定されています。
編集
ビデオでは、男は randoop ルート フォルダーに .java ファイルを持っています。私は intellij で実際のプロジェクトを持っているので、そうではありません。クラスファイルを見つけてbinフォルダーにコピーしました。