我试图在泛型函数中为不同类型参数返回不同的值,但由于某种原因,仅考虑其中一个模拟(看起来是最新的)。我尝试了四种不同的方法,它们都列在下面。
如果您知道可以使用 Mockito 或任何其他模拟框架来实现这种行为,也请告诉我
import io.mockk.MockKAnnotations
import io.mockk.every
import io.mockk.impl.annotations.MockK
import io.reactivex.Single
import org.junit.Before
import org.junit.Test
import retrofit2.Response
class MyTest {
class A
class B
class MyClass() {
fun <T> myMethod(callback: () -> Single<Response<T>>): Single<T> {
error("")
}
}
val a = A()
val b = B()
@MockK
lateinit var myClass: MyClass
@Before
fun setUp() {
MockKAnnotations.init(this)
}
@Test
fun tmp() {
every { myClass.myMethod<A>(any()) } returns (Single.just(a))
every { myClass.myMethod<B>(any()) } returns (Single.just(b))
myClass.myMethod<A> { Single.just(Response.success(a)) }.test().assertResult(a)
myClass.myMethod<B> { …Run Code Online (Sandbox Code Playgroud) 我正在使用此代码来跟踪应用程序何时崩溃:
val core = CrashlyticsCore
.Builder()
.listener {
Log.d("***", "Crash happened")
}
.build()
val crashlyticsKit = Crashlytics
.Builder()
.core(core)
.build()
// Initialize Fabric with the debug-location_inactive crashlytics.
Fabric.with(context, crashlyticsKit)
Run Code Online (Sandbox Code Playgroud)
我正在用throw NullPointerException()和测试它Crashlytics.getInstance().crash()。他们都没有打电话给听众。当应用程序再次启动时,这是在日志中:
I/CrashlyticsCore: Initializing Crashlytics 2.6.1.23
I/CrashlyticsInitProvider: CrashlyticsInitProvider initialization successful
D/FirebaseApp: com.google.firebase.crash.FirebaseCrash is not linked. Skipping initialization.
I/CrashlyticsCore: Crashlytics report upload complete: SOME-LETTERS-AND-NUMBERS
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
编辑 我使用了How to show a Dialog after crash by using Crashlytics 中的代码?作为我的模板,但 API 似乎略有变化(在这个答案中,它实例化为一个类,但现在它是一个侦听器,请参阅文档)