javaの基礎を"スッキリわかるJava入門 実践編"で勉強中の初心者です。
●環境
・java version 13.0.2
・Atom 1.44.0
・script 3.25.0
・jdk 13.0.2
・JUnit junit-4.13.jar
●OS :windows10
###質問内容
JUnitを用いたテストをするために、テストクラスを作成しました。
https://junit.org/junit4/からjunit-4.13.jarをダウンロード後、テストクラスと同じディレクトリに置き、コンパイルと実行を行いました。
コンパイルはうまく通りましたが、実行が上手くいきません。
本や質問サイト、ネットの記事などを参考にエラーの原因を探して、試しましたが、どの方法でもうまくいきません。
方法が分かる方がいれば、教えていただきたいです。
ソースコード
P420
1import static java.lang.System.out; 2import org.junit.Test; 3import static org.junit.Assert.*; 4 5public class P420{ 6 @Test public void instantiate(){ 7 P410 a=new P410("ミナト",30000); 8 assertEquals("ミナト",a.owner); 9 assertEquals(30000,a.balance); 10} 11 @Test public void transfer(){ 12 P410 b=new P410("ミナト",30000); 13 P410 c=new P410("ハヤシ",30000); 14 b.transfer(c,10000); 15 assertEquals(20000,b.balance); 16 } 17}
P410
1import static java.lang.System.out; 2 3public class P410{ 4 String owner; 5 int balance; 6 public P410(String owner,int balance){ 7 this.owner=owner; 8 this.balance=balance; 9 } 10 public void transfer(P410 dest,int amount){ 11 dest.balance += amount; 12 this.balance -= amount; 13 } 14} 15
コンパイルと実行
> javac -cp junit-4.13.jar P420.java P410.java > java -cp junit-4.13.jar org.junit.runner.JUnitCore P420 Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 JUnit version 4.13 .E Time: 0.002 There was 1 failure: 1) initializationError(org.junit.runner.JUnitCommandLineParseResult) java.lang.IllegalArgumentException: Could not find class [P420] at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100) at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50) at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44) at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72) at org.junit.runner.JUnitCore.main(JUnitCore.java:36) Caused by: java.lang.ClassNotFoundException: P420 at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) at java.base/java.lang.Class.forName0(Native Method) at java.base/java.lang.Class.forName(Class.java:416) at org.junit.internal.Classes.getClass(Classes.java:42) at org.junit.internal.Classes.getClass(Classes.java:27) at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98) ... 4 more FAILURES!!! Tests run: 1, Failures: 1
###試したこと
・https://freitech.xsrv.jp/hobby/2018/04/07/post-177/
このサイトより、「@Testを付けたメソッドをテストメソッド内で呼ぶとinitializationErrorが起こる」
➡自分の作ったテストクラスでは、@Testを付けたメソッドをテストメソッド内で読んでいない。
・mainメソッドを入れて、普通にコンパイルと実行
➡問題なくできたので、基本の構文自体が間違っているわけではない。
・違う方法で、コンパイルと実行
javac P420.java P410.java
java org.junit.runner.JUnitCore P420
java -cp .;junit-4.10.jar org.junit.runner.JUnitCore P420
➡どちらもうまくいかない
###追記
回答を踏まえて次の2つの方法で再度実行。➡うまくいかなかった。
> java -cp .;junit-4.13.jar;hamcrest-core-1.3.jar org.junit.runner.JUnitCore P420 使用方法: java [options] <mainclass> [args...] (クラスを実行する場合) または java [options] -jar <jarfile> [args...] (jarファイルを実行する場合) または java [options] -m <module>[/<mainclass>] [args...] java [options] --module <module>[/<mainclass>] [args...] (モジュールのメイン・クラスを実行する場合) または java [options] <sourcefile> [args] (単一のソースファイル・プログラムを実行する場合) メイン・クラス、ソース・ファイル、-jar <jarfile>、 -mまたは--module <module>/<mainclass>に続く引数は、メイン・クラスへの引数として 渡されます。 オプションは次のとおりです: -cp <ディレクトリおよびzip/jarファイルのクラス検索パス> -classpath <ディレクトリおよびzip/jarファイルのクラス検索パス> --class-path <ディレクトリおよびzip/jarファイルのクラス検索パス> ;区切りリスト(ディレクトリ、JARアーカイブ、 ZIPアーカイブ)で、クラス・ファイルの検索用。 -p <module path> --module-path <module path>... ディレクトリの;区切りリスト、各ディレクトリ はモジュールのディレクトリです。 --upgrade-module-path <module path>... ディレクトリの;区切りリスト、各ディレクトリ は、ランタイム・イメージ内のアップグレード可能な モジュールを置換するモジュールのディレクトリです --upgrade-module-path <module path>... ディレクトリの;区切りリスト、各ディレクトリ は、ランタイム・イメージ内のアップグレード可能な モジュールを置換するモジュールのディレクトリです --add-modules <module name>[,<module name>...] 初期モジュールに加えて解決するルート・モジュール。 <module name>には次も指定できます: ALL-DEFAULT、ALL-SYSTEM、 ALL-MODULE-PATH. --list-modules 参照可能なモジュールをリストし終了します -d <module name> --describe-module <module name> モジュールを説明し終了します --dry-run VMを作成しメイン・クラスをロードしますが、メイン・メソッドは実行しません。 --dry-runオプションは、次の検証に役立つ場合があります: モジュール・システム構成などのコマンド行オプション。 --validate-modules すべてのモジュールを検証し終了します --validate-modulesオプションは、次の検索に役立つ場合があります: モジュール・パス上のモジュールでの競合およびその他のエラー。 -D<name>=<value> システム・プロパティを設定します -verbose:[class|module|gc|jni] 特定のサブシステムで詳細出力を有効にする -version 製品バージョンをエラー・ストリームに出力して終了します --version 製品バージョンを出力ストリームに出力して終了します -showversion 製品バージョンをエラー・ストリームに出力して続行します --show-version 製品バージョンを出力ストリームに出力して続行します --show-module-resolution 起動時にモジュール解決出力を表示します -? -h -help このヘルプ・メッセージをエラー・ストリームに出力します --help このヘルプ・メッセージを出力ストリームに出力します -X 追加オプションのヘルプをエラー・ストリームに出力します --help-extra 追加オプションのヘルプを出力ストリームに出力します -ea[:<packagename>...|:<classname>] -enableassertions[:<packagename>...|:<classname>] 指定した粒度でアサーションを有効にします -da[:<packagename>...|:<classname>] -disableassertions[:<packagename>...|:<classname>] 指定した粒度でアサーションを無効にします -esa | -enablesystemassertions システム・アサーションを有効にします -dsa | -disablesystemassertions システム・アサーションを無効にします -agentlib:<libname>[=<options>] ネイティブ・エージェント・ライブラリ<libname>をロードします。例: -agentlib:jdwp -agentlib:jdwp=helpも参照してください -agentpath:<pathname>[=<options>] フルパス名を使用して、ネイティブ・エージェント・ライブラリをロードします -javaagent:<jarpath>[=<options>] Javaプログラミング言語エージェントをロードします。java.lang.instrumentを参照してください -splash:<imagepath> 指定されたイメージを含むスプラッシュ画面を表示します HiDPIスケールのイメージが自動的にサポートされて使用されます (可能な場合)。スケーリングされないイメージのファイル名(image.extなど)を 引数として-splashオプションに必ず渡す必要があります。 指定された最も適切なスケーリング済イメージが選択されます (自動的)。 詳細は、SplashScreen APIのドキュメントを参照してください @argumentファイル オプションを含む1つ以上の引数ファイル -disable-@files さらなる引数ファイル拡張を無効にします --enable-preview クラスをこのリリースのプレビュー機能に依存させることができます 長いオプションの引数を指定する場合、--<name>=<value>または --<name> <value>を使用できます。 junit-4.13.jar : 用語 'junit-4.13.jar' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。名前が正しく記述されていることを確認し、パ スが含まれている場合はそのパスが正しいことを確認してから、再試行してください。 発生場所 行:1 文字:12 + java -cp .;junit-4.13.jar;hamcrest-core-1.3.jar org.junit.runner.JUni ... + ~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (junit-4.13.jar:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException hamcrest-core-1.3.jar : 用語 'hamcrest-core-1.3.jar' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。名前が正しく記述されているこ とを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してください。 発生場所 行:1 文字:27 + java -cp .;junit-4.13.jar;hamcrest-core-1.3.jar org.junit.runner.JUni ... + ~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (hamcrest-core-1.3.jar:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException Suggestion [3,General]: コマンド hamcrest-core-1.3.jar は見つかりませんでしたが、現在の場所に存在します。Windows PowerShell は、既定では、現在の場所からコマンドを読み込みません。この コマンドを信頼する場合は、".\hamcrest-core-1.3.jar" と入力してください。詳細については、"get-help about_Command_Precedence" と入力してヘルプを参照してください。
> java -cp C:\java\book_javaPractice\14Chapter* org.junit.runner.JUnitCore P420 Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 JUnit version 4.13 .E Time: 0.003 There was 1 failure: 1) initializationError(org.junit.runner.JUnitCommandLineParseResult) java.lang.IllegalArgumentException: Could not find class [P420] at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100) at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50) at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44) at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72) at org.junit.runner.JUnitCore.main(JUnitCore.java:36) Caused by: java.lang.ClassNotFoundException: P420 at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) at java.base/java.lang.Class.forName0(Native Method) at java.base/java.lang.Class.forName(Class.java:416) at org.junit.internal.Classes.getClass(Classes.java:42) at org.junit.internal.Classes.getClass(Classes.java:27) at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98) ... 4 more FAILURES!!! Tests run: 1, Failures: 1
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/21 13:21
2020/03/21 15:20
2020/03/22 00:39