android– 用于测试rxjava的书面单元测试,但不确定我的单元测试是否测试了所有内容

android– 用于测试rxjava的书面单元测试,但不确定我的单元测试是否测试了所有内容,第1张

概述AndroidStudio3.4我有以下测试方法.基本上,这个测试做的是发出一个请求,它将返回一个LoginResponseEntity,它将被映射并返回一个Single<LoginResponse>overridefunloginUserPost(username:String,password:String,uniqueIdentifier:String,deviceToken:String,a

AndroID Studio 3.4

我有以下测试方法.基本上,这个测试做的是发出一个请求,它将返回一个LoginResponseEntity,它将被映射并返回一个Single< LoginResponse>

 overrIDe fun loginUserPost(username: String, password: String, uniqueIDentifIEr: String, devicetoken: String, APIToken: String) : Single<LoginResponse> {            val loginRequestEntity = LoginRequestEntity(username, password, uniqueIDentifIEr, devicetoken)            return loginAPIService.loginUserPost(loginRequestEntity, APIToken)                .map {                    loginResponseDomainMapper.map(it)                }    }

我编写的测试用例有效,但我认为这并没有完全测试这种方法.

     @Test     fun `should return LoginResponse`() {        val loginRequestEntity = LoginRequestEntity("username", "password", "uniqueIDentifIEr", "devicetoken")        val loginResponse = LoginResponse("token", createuser(), emptyList(), emptyList())        val loginResponseEntity = LoginResponseEntity("token", createuserEntity(), emptyList(), emptyList())        whenever(loginAPIService.loginUserPost(loginRequestEntity, "APItoken")).thenReturn(Single.just(loginResponseEntity))        loginServiceImp.loginUserPost("username", "password", "uniqueIDentifIEr", "devicetoken", "APItoken")            .test()            .assertValue(loginResponse)        verify(loginAPIService).loginUserPost(loginRequestEntity, "APItoken")    }        private fun createuser() =            User(                "ID",                "email",                "firstname",                "lastname",                "phone",                "address",                "dob",                "customer",                listof("enterpriseIDs"),                listof("vendorIDs"))        private fun createuserEntity() =            UserEntity(                "ID",                "email",                "firstname",                "lastname",                "phone",                "address",                "dob",                "customer",                listof("enterpriseIDs"),                listof("vendorIDs"))    }

我还能做些什么来测试这种方法.我应该测试.map {loginResponseDomainMapper.map(it)这个方法的一部分吗?

解决方法:

这是一个非常小的方法,不包含很多要测试的东西.两个外部依赖项(loginAPIService和loginResponseDomainMapper)减少了要测试的内容.

所以,

1)loginResponseDomainMapper不是测试方法的一部分,也应该被模拟.

2)你必须明白,这里应该测试什么.

>首先:检查LoginRequestEntity是否已正确构造并传递给loginUserPost方法.这是通过验证(loginAPIService).loginUserPost(loginRequestEntity,“APItoken”)调用来完成的.此外,您可以使用ArgumentCaptor.
>第二:loginUserPost方法的输出正确传递给loginResponseDomainMapper.map方法.这可以通过之前的额外验证调用来完成.
>第三:正确返回map方法的输出.这是通过assertValue调用完成的.

因此,您只是想验证数据流是否正确,并且在外星人执行期间没有修改任何内容.

3)负面测试.也有很多事情可能出错.如果loginUserPost没有@NotNull注释,则最好处理此函数的null结果.
另外,如果请求不正确怎么办?密码错了,或APItoken已过期?我相信这不会导致悲惨的后果,但你应该对此有所了解.

总结

以上是内存溢出为你收集整理的android – 用于测试rxjava的书面单元测试,但不确定我的单元测试是否测试了所有内容全部内容,希望文章能够帮你解决android – 用于测试rxjava的书面单元测试,但不确定我的单元测试是否测试了所有内容所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1118596.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存