質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JUnit

JUnitは、Javaで開発されたプログラムのユニットテストを行うためのアプリケーションフレームワークです。簡単にプログラムのユニットテストを自動化することができ、結果もわかりやすく表示されるため効率的に開発時間を短縮できます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

1回答

721閲覧

Eclipse4.7からJUnit4を実行する時の差異について

Radec

総合スコア21

JUnit

JUnitは、Javaで開発されたプログラムのユニットテストを行うためのアプリケーションフレームワークです。簡単にプログラムのユニットテストを自動化することができ、結果もわかりやすく表示されるため効率的に開発時間を短縮できます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2019/01/21 15:49

編集2019/01/25 16:20

前提・実現したいこと

Eclipse4.7からJUnit4を実行したいです。
成功パターンと失敗パターンがあるのですが、その差異が発生する理由はどこにあるのでしょうか?
必要であればキャプチャ画像を添付致します。

発生している問題・エラーメッセージ

失敗パターンでは、java.lang.NoClassDefFoundErrorが発生する

該当のソースコード

Java

1//テスト対象となるクラス 2public class Account { 3 String owner; 4 int balance; 5 public Account(String owner,int balance) { 6 this.owner = owner; 7 this.balance = balance; 8 } 9 public void transder(Account dest,int amount) { 10 dest.balance += amount; 11 balance -= amount; 12 } 13}

Java

1//JUnitでテストするためのテストクラス 2import static org.junit.Assert.*; 3import org.junit.Test; 4 5public class AccountTest { 6 @Test public void instantiate() { 7 Account a = new Account("test",30000); 8 assertEquals("test",a.owner); 9 assertEquals(30000,a.balance); 10 } 11}

試したこと

<成功パターン>
①プロジェクトを右クリック→「ビルド・パス」→「ビルド・パスの構成」を選択
②「ライブラリータブ」から「ライブラリーの追加」→「JUnit」→「JUnit4」を追加→JUnitライブラリーが追加される(ライブラリにはjunit.jarが含まれている)
③「順序およびエクスポートタブ」から②で追加したJUnit4をクラスパスに追加??(自信なし)
④上記の「AccountTest.java」を「JUnitテスト」で実行
⑤実行1/1となって問題なくテストができたと思われる

<失敗パターン>
①プロジェクトを右クリック→「ビルド・パス」→「ビルド・パスの構成」を選択
②「ライブラリータブ」から「外部JARの追加」→「事前に別フォルダ(C:\Java\jdk1.8.0_181\lib)にDLしたjunit-4.12.jarを追加」→参照ライブラリーにjunit.jarが追加される
③「順序およびエクスポートタブ」から②で追加したjarファイルをクラスパスに追加??(自信なし)
④上記の「junit-4.12.jarAccountTest.java」を「JUnitテスト」で実行
⑤エラー内容がjava.lang.NoClassDefFoundErrorとなる

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

euledge

2019/01/24 00:36

失敗パターンに書いてある ④上記の「junit-4.12.jar」を「JUnitテスト」で実行 というのは記述の誤りでは無いでしょうか?
Radec

2019/01/24 16:12

申し訳ありません。 ④が誤記とすると想定されている正解はどのようなものでしょうか? 当方の認識誤りと思うのですが、junitのJARファイルにメインメソッドが含まれたクラス(junitCoreクラス)が存在するので、junitのJARファイルを実行する。わけではないでしょうか? なお、確かにテストクラスをJunitテストで実行が正しいような気もしてきたので、そちらも実行してみましたが、冒頭記載のエラーメッセージが出力されるようです。
euledge

2019/01/25 03:41

テストを実行するというのはテストクラスをJUnitを使用して実行というのが正しいですね。 コマンドラインで行うのならば java org.junit.runner.JUnitCore AccountTest のようになりますがEclipseではそれを行うのにはテストクラスを選択したものに対して上のコマンドを実行していると思います。 「確かにテストクラスをJunitテストで実行が正しいような気もしてきたので」とありますがそれって成功パターンでやっていることとは違うのでしょうか?同じであればエラーメッセージは表示されないと思うのですが何か手順が違いますか? 念のためテストクラスというのは AccountTestのことで テスト対象のAccountではないですよ。
guest

回答1

0

ベストアンサー

成功パターンでは、「AccountTest.java」を「JUnitテスト」で実行していますが
失敗パターンでは、「junit-4.12.jar」を「JUnitテスト」で実行しています。

JUnitにはテストを行うためのメソッドが含まれているライブラリで
JUnitはユーザーが作成したクラスに対して実行するものであり
Junit自身のテストを行うものではありません

投稿2019/01/24 22:39

euledge

総合スコア2404

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問