他のクラスと依存関係を持つクラスをテストするために
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);
の列でヌルポになってしまいます。
どのようにすれば改善できるでしょうか。
あなたの回答
tips
プレビュー