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

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

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

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

Java

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

アノテーション

アノテーションとは、特定のコードに対して、メタデータを注釈として付与することを指します。また、付与したメタデータ自体をアノテーションと呼ぶ場合もあります。

テスト駆動開発

テスト駆動開発は、 プログラム開発手法の一種で、 プログラムに必要な各機能をテストとして書き、 そのテストが動作する必要最低限な実装を行い コードを洗練させる、といったサイクルを繰り返す手法の事です。

IntelliJ IDEA

IntelliJ IDEA(インテリジェイ アイディア)は、JetBrains社が開発した、 JavaやScalaなどで利用される統合開発環境です。

Q&A

解決済

2回答

12021閲覧

JUnit4のBeforeアノテーションの中身が実行されない

odds0128

総合スコア31

JUnit

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

Java

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

アノテーション

アノテーションとは、特定のコードに対して、メタデータを注釈として付与することを指します。また、付与したメタデータ自体をアノテーションと呼ぶ場合もあります。

テスト駆動開発

テスト駆動開発は、 プログラム開発手法の一種で、 プログラムに必要な各機能をテストとして書き、 そのテストが動作する必要最低限な実装を行い コードを洗練させる、といったサイクルを繰り返す手法の事です。

IntelliJ IDEA

IntelliJ IDEA(インテリジェイ アイディア)は、JetBrains社が開発した、 JavaやScalaなどで利用される統合開発環境です。

0グッド

0クリップ

投稿2018/06/06 04:58

編集2018/06/06 06:43

前提・実現したいこと

JavaでJUnitを用いてテストコードを書いていて,Beforeアノテーションを用いて事前の処理を実現しようとしていました.しかし下記のように書いたところ,"@Before"の中身が実行されません. 出力を見ていただけると①が実行されずさらに②は実行されていることがわかります.さらにその出力結果からagentsに何も入っていないことが確認できます.

アノテーションをつけるだけでは実行されないのでしょうか?

出力

Test: 0

Process finished with exit code 0

該当のソースコード

Java

1package agent; 2 3import org.junit.Before; 4import org.junit.jupiter.api.Test; 5 6import java.util.ArrayList; 7import java.util.List; 8import myUtil.myRandom; 9 10import static org.hamcrest.CoreMatchers.is; 11import static org.hamcrest.MatcherAssert.assertThat; 12import static org.hamcrest.Matchers.greaterThanOrEqualTo; 13import static constants.EnvironmentalConstants.*; 14 15public class AgentTest { 16 private List<Agent> agents = new ArrayList<>(); 17 private int agentNum = 500; 18 19 // エージェントを生成し,myRandomにシードを設定しておく 20 @Before 21 public void setUp(){ 22 System.out.println("Before"); //①-1 23 myRandom.setRand(1000000009); 24 this.agents = Agent.lGenerateAgents(agentNum); 25 System.out.println("Before: " + agents.size()); //①-2 26 } 27 28 @Test 29 public void エージェントが全員違うところに配置されている(){ 30 System.out.println("Test: " + agents.size()); //② 31 // 以下略 32

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

~~ JUnit4 ~~
JUnit5

Intellij Idea

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

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

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

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

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

euledge

2018/06/06 05:39

setUp()の一番最初に System.out.println("Before: ") としても出力されませんか?
odds0128

2018/06/06 06:00

何も出力されないようです...
odds0128

2018/06/06 06:22

本当にすみません,自己解決しました... JUnit5では挙動が違うのですかね?
euledge

2018/06/06 06:23

"org.junit.jupiter.api.Test" が importされてますが jupiterってJUnit5ではなかったでしょうか?
odds0128

2018/06/06 06:37

その通りです,そこから間違えていました.お恥ずかしい限りです.
guest

回答2

0

JUnit5のときは @Beforeでなく @BeforeEachですね。

以下記事の紹介しておきます。
JUnit 4で消耗しているあなたに贈るJUnit 5入門

投稿2018/06/06 06:26

euledge

総合スコア2404

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

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

odds0128

2018/06/06 06:40

バージョンでアノテーションの名前自体が変わったりするものなんですね... ありがとうございます! 本当に助かります.早速読んで見ます.
guest

0

自己解決

JUnit4ではなくJUnit5が適用されていたようです!
本当にしょうもなくて申し訳ございません...
JUnit5ではアノテーションの動作が違うのですかね?
まだ調べていないので4と5の違いに気をつけ,どちらで何ができてどう変わったのか調査したいと思います.

投稿2018/06/06 06:21

odds0128

総合スコア31

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問