如何在AndroidTest源集中使用Mockito



如何在集成测试(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(它们在上面的代码中都被注释掉了(。

  1. MockitoAnnotations.openMock(this(
  2. @get:规则val mockitoRule:mockitoRule=MockitoJunit.rule((
  3. @RunWith(MockitoJUnitRunner::class(

Could not initialize plugin: interface org.mockito.plugins.MockMaker (alternate: null)

ByteBuddy的不兼容版本引起。您可以在外部库中找到您正在使用的ByteBuddy的版本,并将其与mockito-android正在使用的版本进行比较,您可以在此处检查版本

您需要将mockito-android库更改为与应用程序中的ByteBuddy版本匹配的版本,或者调整ByteBuddy以与mockito-android中的版本匹配

相关内容

  • 没有找到相关文章

最新更新