[英]unit testing with the input and output validation
我是Android單元測試的新手。 我想在presenter類中為方法編寫單元測試。
共享方法需要進行單元測試
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-----
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.