web-dev-qa-db-ja.com

MockitoJUnitRunnerは非推奨です

@InjectMocks@Mockを使用して単体テストを作成しようとしています。

@RunWith(MockitoJUnitRunner.class)
public class ProblemDefinitionTest {

    @InjectMocks
    ProblemDefinition problemDefinition;

    @Mock
    Matrix matrixMock;    

    @Test
    public void sanityCheck() {
        Assert.assertNotNull(problemDefinition);
        Assert.assertNotNull(matrixMock);
    }
}

@RunWith注釈を含めない場合、テストは失敗します。しかし

タイプMockitoJUnitRunnerは非推奨です

Mockito 2.6.9を使用しています。これについてどうすればいいですか?

56
Albert Hendriks

org.mockito.runners.MockitoJUnitRunner は非推奨になりました。代わりに org.mockito.junit.MockitoJUnitRunner を使用することになります。パッケージ名のみが変更されていることがわかるように、クラスの単純な名前はまだMockitoJUnitRunnerです。

org.mockito.runners.MockitoJUnitRunnerのjavadocからの抜粋:

MockitoJUnitRunner に移動し、このクラスはMockito 3で削除されます

116
Nicolas Filotto

これを試すことができます:

@Before
public void setup() {
    MockitoAnnotations.initMocks(this);
}

@Before注釈を追加するため、モックオブジェクトは何度も新しく記録され、すべてのテストでオブジェクトに新しいプロパティを与えることができます。ただし、モックオブジェクトの1回限りの記録動作が必要な場合は、@BeforeCLassを追加してください

7
MateuszW90

@Ruleオプションもあります:

@Rule 
public MockitoRule rule = MockitoJUnit.rule();

またはコトリンで:

@get:Rule
var rule = MockitoJUnit.rule()
4
git pull origin