Это следует из этот вопрос: где меня просят начать новый вопрос.
Проблема в том, что я просто недостаточно знаю о JUnit Rule
или о том, что здесь происходит с Runners
и т.п., чтобы решить проблему способом, на который ссылается Джефф Боуман.
Это следует из этот вопрос: где меня просят начать новый вопрос.
Проблема в том, что я просто недостаточно знаю о JUnit Rule
или о том, что здесь происходит с Runners
и т.п., чтобы решить проблему способом, на который ссылается Джефф Боуман.
В ваших более поздних комментариях я понял пробел: вам нужно использовать Mockito как правило и Parameterized как бегун, а не наоборот.
Причина в том, что Runner отвечает за отчет о количестве тестов, а Parameterized манипулирует количеством тестов на основе количества тестовых методов и количества параметризованных входных данных, поэтому очень важно, чтобы Parameterized был частью процесса Runner. . Напротив, использование бегуна или правила Mockito заключается в том, чтобы просто инкапсулировать методы @Before
и @After
, которые инициализируют аннотации Mockito и проверяют использование Mockito, что можно сделать очень легко, поскольку @Rule
работает рядом с другими экземплярами @Rule
- до точки что MockitoJUnitRunner почти устарел.
Чтобы получить данные непосредственно со страницы документа параметризованного теста JUnit4 и MockitoRule:
@RunWith(Parameterized.class)
public class YourComponentTest {
@Rule public MockitoRule rule = MockitoJUnit.rule();
@Mock YourDep mockYourDep;
@Parameters
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][] {
{ 0, 0 }, { 1, 1 }, { 2, 1 }, { 3, 2 }, { 4, 3 }, { 5, 5 }, { 6, 8 }
});
}
private int fInput;
private int fExpected;
public YourComponentTest(int input, int expected) {
fInput = input;
fExpected = expected;
}
@Test
public void test() {
// As you may surmise, this is not a very realistic example of Mockito's use.
when(mockYourDep.calculate(fInput)).thenReturn(fExpected);
YourComponent yourComponent = new YourComponent(mockYourDep);
assertEquals(fExpected, yourComponent.compute(fInput));
}
}
@Mock private int fInput
?
- person Atieh; 08.01.2018
@Mock
параметры заполняются в каждом тестовом примере (т.е. в каждом экземпляре тестового класса). Пока параметризованный бегун находится в аннотации @RunWith
, а инициализация Mockito так или иначе происходит, они отлично работают вместе.
- person Jeff Bowman; 09.01.2018
RunWith
. Поэтому невозможно объединитьRunWith(MockitoJUnitRunner.class)
сRunWith(Parameterized.class)
. Вы должны думать об этом, а не предполагать, что люди моложе или глупее вас. - person mike rodent   schedule 24.11.2016