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

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

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

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

Q&A

0回答

2653閲覧

【JUnit】mockitoを使用したテストのお作法

RyotaIwasaki

総合スコア13

JUnit

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

0グッド

0クリップ

投稿2019/06/27 06:34

他のクラスと依存関係を持つクラスをテストするために
mockitoを使いテストしたいと思っています。

■作ったクラス

①NumberGeneratorクラス
1~100までの乱数を生成し、返すrandom2メソッドを持つ

Java

1import java.util.Random; 2 3public class NumberGenerator { 4 5 int random2() { 6 Random r = new Random(1); 7 int rValue = r.nextInt(101); 8 return rValue; 9 } 10 11}

HalfCalculatorクラス
random2メソッドを呼び出し、受け取った乱数を1/2にする
halfCalculatorメソッドを持つ

Java

1public class HalfCalculator { 2 3 public double halfCalculator() { 4 NumberGenerator ng = new NumberGenerator(); 5 int x = ng.random2(); 6 return x/2.0; 7 } 8}

今回はNumberGeneratorをモック化し、
HalfCalculatorが正しく半分にできるかを判定したいと考えてます。

以下テストクラス

Java

1import static org.hamcrest.Matchers.*; 2import static org.junit.Assert.*; 3import static org.mockito.Mockito.*; 4 5import org.junit.Before; 6import org.junit.jupiter.api.Test; 7import org.junit.runner.RunWith; 8import org.mockito.InjectMocks; 9import org.mockito.Mock; 10import org.mockito.MockitoAnnotations; 11import org.mockito.junit.MockitoJUnitRunner; 12@RunWith(MockitoJUnitRunner.class) 13class HalfCalculatorTest { 14 15 @Mock 16 NumberGenerator ng; 17 18 @InjectMocks 19 HalfCalculator hc; 20 21 @Before 22 public void setup() { 23 MockitoAnnotations.initMocks(this); 24 } 25 26 @Test 27 public void ac2test() { 28 when(ng.random2()).thenReturn(50); 29 double half = hc.halfCalculator(); 30 assertEquals(half, is(25.0)); 31 } 32}

この時に
when(ng.random2()).thenReturn(50);
の列でヌルポになってしまいます。

どのようにすれば改善できるでしょうか。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問