gpt4 book ai didi

android - 使用输入和输出验证进行单元测试

转载 作者:行者123 更新时间:2023-11-30 05:10:21 25 4
gpt4 key购买 nike

我对 Android 中的单元测试完全陌生。我想为我的演示者类中的方法编写单元测试。

共享需要单元测试覆盖的方法

 override fun getRequiredUri(uri: Uri): Uri {
val moduleName = uri.moduleName
return when (moduleName) {
"sample" -> getStandardUriFromSampleUri(uri)
"application" -> getStandardAppLaunchUri(uri)
else -> {
return uri
}
}
}

private fun getStandardUriFromSampleUri(uri: Uri): Uri {
var stringUrl = uri.toString()
stringUrl = stringUrl.replaceFirst("/sample", "")
var standardUri = Uri.parse(stringUrl)
val moduleName = uri.moduleName
if(moduleName == "application"){
standardUri = getStandardAppLaunchUri(uri)
}
return standardUri
}

private fun getStandardAppLaunchUri(uri: Uri): Uri {
var stringUrl = uri.toString()
stringUrl = stringUrl.replaceFirst("application", "link/application")
return Uri.parse(stringUrl)
}

我正在分享我尝试实现的测试类:

class PresenterTest {

lateinit var presenter: Presenter
@Mock
lateinit var mockActivity: Activity
@Mock
lateinit var mockUri: Uri

@Before
fun setUp() {
MockitoAnnotations.initMocks(this)
presenter = Presenter()
presenter.view = mockActivity
}

@Test
fun shouldGenerateStandardUriFromNewUri() {
val input = Uri.parse("https://example.org/sample/account/edit")
val expectedOutput = Uri.parse("https://example.org/account/edit")
val output = presenter. getRequiredUri(input)
assertTrue(output == expectedOutput)
}

}

此行总是失败,类未找到异常。

val output = presenter.getRequiredUri(input)

这是对方法进行单元测试的正确方法吗?如果是,请建议我需要进行的更改。如果否,请提出替代方法。

最佳答案

崩溃发生在行

uri.moduleName

即:从测试类创建 Uri 对象时,路径段 (uri.patheSegments) 为空。

解决方案是使用 RoboElectricTestRunner 运行测试类。

也就是测试类应该是这样的:

@Config(constants = BuildConfig::class)
@RunWith(RobolectricTestRunner::class)
class UriInterceptPresenterTest {

//-----Test cases-----

}

关于android - 使用输入和输出验证进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53851456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com