如何在集成测试(AndroidTest(中使用Mocks。我收到以下错误。
Could not initialize plugin: interface org.mockito.plugins.MockMaker (alternate: null)
我正在使用以下依赖项。
androidTestImplementation "org.mockito:mockito-android:3.11.2" <br>
androidTestImplementation "org.mockito:mockito-core:3.11.2" <br>
我认为不再需要dexmaker了
androidTestImplementation "com.linkedin.dexmaker:dexmaker-mockito:2.28.1"
我已经排除了以下类,因为构建抱怨有多个文件路径。
packagingOptions {
exclude "mockito-extensions/org.mockito.plugins.MockMaker"
}
我的碎片测试看起来像这个
//@RunWith(MockitoJUnitRunner::class)
class DetailsFragmentTest {
// @get:Rule
// val mockitoRule: MockitoRule = MockitoJUnit.rule()
private lateinit var bundle: Bundle
private lateinit var scenario: FragmentScenario<DetailsFragment>
@Mock
private lateinit var viewModel: MainViewModel
@Before
fun setup() {
MockitoAnnotations.openMocks(this)
bundle = DetailsFragmentArgs("Test").toBundle()
scenario = launchFragmentInContainer(
factory = MainFragmentFactory(viewModel),
fragmentArgs = bundle,
themeResId = R.style.Theme_Words
)
}
@Test
fun textView_WordDescription() {
Espresso.onView(ViewMatchers.withId(R.id.tv_word))
.check(ViewAssertions.matches(ViewMatchers.isDisplayed()))
}
}
我尝试了三种不同的方式初始化Mockito(它们在上面的代码中都被注释掉了(。
- MockitoAnnotations.openMock(this(
- @get:规则val mockitoRule:mockitoRule=MockitoJunit.rule((
- @RunWith(MockitoJUnitRunner::class(
Could not initialize plugin: interface org.mockito.plugins.MockMaker (alternate: null)
由ByteBuddy
的不兼容版本引起。您可以在外部库中找到您正在使用的ByteBuddy
的版本,并将其与mockito-android
正在使用的版本进行比较,您可以在此处检查版本
您需要将mockito-android
库更改为与应用程序中的ByteBuddy
版本匹配的版本,或者调整ByteBuddy
以与mockito-android
中的版本匹配