仕様によると、同じ注釈付き要素に同じ注釈を2回置くことができないため、これを行うことはできません。
それで、解決策は何ですか?解決策は、@RunWith()
あなたが立つことができないランナーを持つ1つだけを置き、他のものを他のものと交換することです。あなたの場合、私はあなたがそれを削除MockitoJUnitRunner
してプログラム的に行うと思います。
実際、それが実行する唯一のことは次のとおりです。
MockitoAnnotations.initMocks(test);
テストケースの始めに。したがって、最も簡単な解決策は、このコードをsetUp()
メソッドに配置することです。
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
}
私はわからないが、おそらくあなたは、フラグを使用して、このメソッドの複数の呼び出しを回避する必要があります。
private boolean mockInitialized = false;
@Before
public void setUp() {
if (!mockInitialized) {
MockitoAnnotations.initMocks(this);
mockInitialized = true;
}
}
ただし、JUntのルールを使用して再利用可能なソリューションを実装することもできます。
public class MockitoRule extends TestWatcher {
private boolean mockInitialized = false;
@Override
protected void starting(Description d) {
if (!mockInitialized) {
MockitoAnnotations.initMocks(this);
mockInitialized = true;
}
}
}
次の行をテストクラスに追加します。
@Rule public MockitoRule mockitoRule = MockitoJUnit.rule();
このテストケースは、任意のランナーで実行できます。