Java MockitoJUnitRunner已被弃用
我正在尝试使用Java MockitoJUnitRunner已被弃用,java,mockito,deprecated,Java,Mockito,Deprecated,我正在尝试使用@injectmock和@Mock进行单元测试 @RunWith(MockitoJUnitRunner.class) public class ProblemDefinitionTest { @InjectMocks ProblemDefinition problemDefinition; @Mock Matrix matrixMock; @Test public void sanityCheck() {
@injectmock
和@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类型
我使用的是Mockito2.6.9。我该怎么做呢?现在确实不受欢迎,你应该用它来代替。正如您所看到的,只有包名已更改,类的简单名称仍然是MockitoJUnitRunner
摘自org.mockito.runners.MockitoJUnitRunner
的javadoc:
移动到,将使用删除此类
莫基托3号
如果您不想使用@RunWith(MockitoJUnitRunner.class),可以试试这个 您可以尝试以下方法:
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
}
因为您在注释之前添加了
@,所以您的模拟对象可以是新的并被多次记录,并且在所有测试中,您可以为对象提供新的属性。但是,如果您想要模拟对象的一次性记录行为,请添加@BeforeCLass
还有一个@Rule
选项:
@Rule
public MockitoRule rule = MockitoJUnit.rule();
或在科特林:
@get:Rule
var rule = MockitoJUnit.rule()
您可以尝试导入以下内容:
import org.mockito.runners.MockitoJUnitRunner;
另外,如果您使用的是Eclipse,只需按Ctrl+Shift+O,它就会自动导入它。我在将依赖项更新到最新版本时成功地解决了这一问题:
def mockito_version = '2.28.2'
// For local unit tests on your development machine
testImplementation "org.mockito:mockito-core:$mockito_version"
// For instrumentation tests on Android devices and emulators
androidTestImplementation "org.mockito:mockito-android:$mockito_version"
然后我通过replace命令(Mac:cmd+Shift+R窗口:Ctrl+Shift+R)更改了导入
从
到
“BeforeClass”方法应该是静态的,它没有访问“this”的权限。谢谢,为我节省了几个小时。
def mockito_version = '2.28.2'
// For local unit tests on your development machine
testImplementation "org.mockito:mockito-core:$mockito_version"
// For instrumentation tests on Android devices and emulators
androidTestImplementation "org.mockito:mockito-android:$mockito_version"
import org.mockito.runners.MockitoJUnitRunner;
import org.mockito.junit.MockitoJUnitRunner;