MockitoJUnitRunner устарел
Я пытаюсь сделать unit test с @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. Как мне это сделать?
Ответы
Ответ 1
org.mockito.runners.MockitoJUnitRunner
теперь действительно устарел, вы должны использовать org.mockito.junit.MockitoJUnitRunner
. Поскольку вы можете видеть только изменение имени пакета, простое имя класса по-прежнему MockitoJUnitRunner
.
Выдержка из javadoc org.mockito.runners.MockitoJUnitRunner
:
Переместится на MockitoJUnitRunner
, этот класс будет удален с помощью Mockito 3
Ответ 2
Вы можете попробовать следующее:
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
}
Поскольку вы добавляете аннотацию @Before
, ваши макетные объекты могут быть новыми и записанными много раз, и во всех тестах вы можете дать объектам новые свойства. Но если вы хотите, чтобы одно время записывало поведение для макета, добавьте @BeforeCLass
Ответ 3
Существует также опция @Rule
:
@Rule
public MockitoRule rule = MockitoJUnit.rule();
Или в Котлине:
@get:Rule
var rule = MockitoJUnit.rule()
Ответ 4
Вы можете попробовать это, если вы не хотите использовать @RunWith (MockitoJUnitRunner.class)
@BeforeClass
public void setup() {
MockitoAnnotations.initMocks(this);
}