MockitoJUnitRunner устарел

30

Я пытаюсь сделать единичный тест с @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. Как мне это сделать?

    
задан Albert Hendriks 28.01.2017 в 12:58
источник

4 ответа

63

org.mockito.runners.MockitoJUnitRunner теперь на самом деле не рекомендуется, вы должны использовать org.mockito.junit.MockitoJUnitRunner вместо этого. Поскольку вы видите только изменение имени пакета, простое имя класса по-прежнему MockitoJUnitRunner .

Выдержка из javadoc org.mockito.runners.MockitoJUnitRunner :

  

Переместился на MockitoJUnitRunner , этот класс будет удален с помощью   Mockito 3

    
ответ дан Nicolas Filotto 28.01.2017 в 13:05
источник
5

Вы можете попробовать следующее:

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

Поскольку вы добавляете аннотацию @Before , ваши макетные объекты могут быть новыми и записанными много раз, и во всех тестах вы можете дать объектам новые свойства. Но если вы хотите, чтобы одно время срабатывало для макетного объекта, добавьте @BeforeCLass

    
ответ дан MateuszW90 28.01.2017 в 13:29
источник
2

Существует также опция @Rule :

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

Или в Котлине:

@get:Rule
var rule = MockitoJUnit.rule()
    
ответ дан git pull origin 07.11.2017 в 15:03
источник
0

Вы можете попробовать это, если вы не хотите использовать @RunWith (MockitoJUnitRunner.class)

@BeforeClass
public void setup() {
    MockitoAnnotations.initMocks(this);
}
    
ответ дан Hiccup 28.01.2017 в 13:14
источник