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

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

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

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

Java

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

Apache Ant

Apache Antは、開発環境(OS等)に依存しにくい、Javaプロジェクト用のビルドツールです。

Q&A

2回答

11442閲覧

Antでのビルド実行時に特定のメソッドが見つからずコンパイルエラーとなる

potatosh

総合スコア8

JUnit

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

Java

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

Apache Ant

Apache Antは、開発環境(OS等)に依存しにくい、Javaプロジェクト用のビルドツールです。

0グッド

0クリップ

投稿2016/05/16 15:08

編集2022/01/12 10:55

Apache Antでのビルド実行時に、クラスパスに含まれているはずのライブラリで実装されているメソッドが見つからず、コンパイルエラーとなります。

###発生している問題・エラーメッセージ
以前、JUnit 3を用いていたテストコードを、JUnit 4を用いるように修正したところ、そのJUnit 4のメソッドが見つからずにエラーが発生するようになりました。なお、Eclipse上ではコンパイルエラーとならず、テストもパスします。

なお、同じクラス内の下記以外の箇所でも同じ名前のメソッド(第1引数でreasonの文字列をとるものを含む)を使用しており、全てエラーとなっています。

C:\...\ExampleTest.java:123: シンボルを見つけられません。 シンボル: メソッド assertThat(boolean,org.hamcrest.Matcher<boolean>) 場所 : mypackage.ExampleTest の クラス assertThat(d.exists(), is(false)); ^

###該当のソースコード
実際のコードとは異なりますが、エラーとなっている部分は下記のコードとほぼ同じものになります。

  • テストコード

Java

1import static org.junit.Assert.assertThat; 2import static org.hamcrest.CoreMatchers.is; 3 4import java.io.File; 5 6import org.junit.Test; 7 8public class ExampleTest { 9 @Test 10 public void test() { 11 File d = new File("C:\\Users\\user\\dir"); 12 assertThat(d.exists(), is(false)); 13 } 14}
  • build.xml

XML

1<path id="library"> 2 <fileset dir="${dir1}"> 3 <include name="**/*.jar" /> 4 </fileset> 5 <fileset dir="${dir2}"> 6 <include name="**/*.jar" /> 7 </fileset> 8 <fileset dir="${dir3}"> 9 <include name="**/*.jar" /> 10 </fileset> 11 <fileset dir="${dir4}"> 12 <include name="**/*.jar" /> 13 </fileset> 14</path> 15 16<path id="classpath.test"> 17 <path refid="library" /> 18 <pathelement location="${dir.metadata}" /> 19</path> 20 21<path id="testpath"> 22 <pathelement location="${test.src}" /> 23</path> 24 25<target name="buildtest"> 26 <javac destdir="${destdir}" encoding="UTF-8" debug="true"> 27 <classpath refid="classpath.test" /> 28 <src refid="testpath"> 29 </javac> 30</target>

${XXX}の形式で記載しているディレクトリは全て存在しています。

###試したこと

  • クラスパスにJUnitのjarファイルが含まれているかを確認(Ant実行時にverboseオプションを付加して確認しましたが、含まれていました)
  • JUnitのjarファイルをクラスパスの先頭に移動する(結果は変わりませんでした)
  • 最新版のAnt(1.9.7)でビルド(結果は変わりませんでした)
  • 競合が考えられるライブラリ(Hamcrest)をクラスパスから除外(上記エラーメッセージのみの解消を確認するために試しましたが、解消されませんでした)

###補足情報(言語/FW/ツール等のバージョンなど)

  • JDKバージョン: 1.6.0_45
  • Antバージョン: 1.9.2
  • Eclipseバージョン: 4.4 Luna

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

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

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

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

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

guest

回答2

0

assertThat(boolean,org.hamcrest.Matcher<boolean>) が見つからないと出ていますので、hamcrestが必要になっていますね。

あと気になる点で、本件とは少し話がそれるのですが、

java

1File d = new File("C:\Users\user\dir");

こちらコンパイルエラーになると思われますので、ご確認ください。

java

1import static org.hamcrest.CoreMatchers.*; 2import static org.junit.Assert.*; 3 4import org.junit.Test; 5 6import java.io.File; 7 8public class FileExistsTest { 9 10 @Test 11 public void test() { 12 File d = new File("C:\\Users\\user\\dir"); 13 assertThat(d.exists(), is(false)); 14 } 15}

投稿2016/05/17 06:46

A-pZ

総合スコア12011

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

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

potatosh

2016/05/17 08:24

ご指摘ありがとうございます。\マークのエスケープについて失念しておりました・・・。修正しました。
guest

0

「import static org.junit.Assert.assertThat;」というようにassertThatをstaticインポートしてはどうでしょう?

投稿2016/05/17 00:58

tkturbo

総合スコア5572

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

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

potatosh

2016/05/17 01:00

エラーとなっているテストコードは全てorg.junit.Assert.assertThatをstaticインポートしています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問