预期行为-在 Android 中使用 JUnit5 使用 MockK 的类、轻松或构造函数模拟功能在本地单元测试中模拟FirebaseApp.class。
当前行为- 引发以下错误。
java.lang.NoClassDefFoundError: 无法初始化类 com.google.firebase.FirebaseApp
要模拟的类/函数 - FirebaseAuth.class
package com.google.firebase.auth;
@NonNull
@Keep
public static FirebaseAuth getInstance() {
return (FirebaseAuth)FirebaseApp.getInstance().get(FirebaseAuth.class);
}
//`getCurrentUser` is accessed via the auto generated `currentUser` attribute in Kotlin.
@Nullable
public FirebaseUser getCurrentUser() {
return this.zzf;
}
Run Code Online (Sandbox Code Playgroud)
测试 - SomeTest.kt
// Relaxed mock attempts.
every { FirebaseApp.getInstance() } returns mockk(relaxed = true)
every { FirebaseAuth.getInstance(any())} returns mockk(relaxed …Run Code Online (Sandbox Code Playgroud) 我想要一种将命令行参数发送到我的测试类以运行所有单元测试并从中创建测试覆盖率报告的方法。我使用下面的命令来生成测试覆盖率报告并传递参数
./gradlew createDebugCoverageReport -Dparam=input1
Run Code Online (Sandbox Code Playgroud)
下面是应用程序 gradle 文件
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
compileSdkVersion 30
defaultConfig {
applicationId "com.example.testcoverageapp"
minSdkVersion 27
targetSdkVersion 30
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
debug {
testCoverageEnabled true
}
}
testOptions {
unitTests.includeAndroidResources = true
unitTests.all {
useJUnitPlatform()
test {
println systemProperties['param']
systemProperties(System.getProperties())
}
}
}
tasks.withType(Test){
systemProperties=System.properties
println systemProperties['param.name']
systemProperty 'param.name', System.getProperty('param')
}
}
dependencies {
implementation fileTree(dir: …Run Code Online (Sandbox Code Playgroud) android gradle android-testing build.gradle android-instrumentation
我想阅读一个模拟的RSS提要文件,以便在Android应用的Xamarin NUnit测试中进行测试.测试类没有上下文,所以我不能将文件放在Assets文件夹中并执行此操作:
System.IO.Stream strIn = instanceOfAssetManager.Open(feedFile);
Run Code Online (Sandbox Code Playgroud)
它也没有祖先,所以我不能这样做:
System.IO.Stream strIn = this.Class.ClassLoader.ResourceAsStream(feedFile);
Run Code Online (Sandbox Code Playgroud)
有什么建议我怎么可以到达快乐的事情?
这个案例解决了不同平台/设置的类似问题: 在测试项目中存储测试文件
我试图安装Mockito并收到错误消息.当我得到它时,我会回来添加我自己的答案.
对于真正的MainActivity及其派生的MockActivity,测试端都会发生这种情况.
它也发生在一个新的Android项目中,Android版本为4.3,并且是一个非常新的Eclipse.再加上Mockito 1.9.5.任何问题,维护者?
测试用例很简单,并且使用ActivityUnitTestCase<MainActivity>.
有没有人见过这种堆栈跟踪?
org.mockito.exceptions.base.MockitoException: Failed to mock class com.example.example.test.MockActivity
at com.example.example.test.SmartPhinsTest.test_mockito_mocks_activities(ExampleTest.java:39)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:214)
at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:199)
Run Code Online (Sandbox Code Playgroud)
有人可能已经找到了测试框架标签吗?
(普通)代码片段是:
package com.example.example.test;
import java.io.File;
import android.app.Instrumentation;
import android.content.Context;
import android.content.Intent;
import android.test.ActivityUnitTestCase;
import com.example.example.MainActivity;
import static org.mockito.Mockito.*;
public class ActivityTests extends ActivityUnitTestCase<MainActivity> {
public ActivityTests(Class<MainActivity> activityClass) {
super(activityClass);
}
public ActivityTests() {
super(MainActivity.class);
}
Activity activity;
Context targetContext;
Intent intent;
@Override
protected void setUp() throws Exception {
targetContext = getInstrumentation().getTargetContext();
intent …Run Code Online (Sandbox Code Playgroud) 这个简单的测试
@RunWith(JUnit4::class)
class Test {
@Test
fun test() {
assert(false)
}
}
Run Code Online (Sandbox Code Playgroud)
出乎意料的是,这在放入时androidTest(通过 Android Studio 和在终端中)通过,但在放入test.
我已经通过Android文档中的Test Android Apps进行了测试。Google推出了AndroidX测试,但是我对其含义仍然感到困惑。
我将MVVM Android体系结构组件与ViewModel,LiveData一起使用。
我需要使用Android X Framework的哪些部分?
View(Activity.Fragments)->浓咖啡?
ViewModel(with LiveData)-> RoboElectric吗?
模型-> JUnit还是RoboElectric?
为什么Google仍然使我们对许多库感到困惑,为什么它们不能在同一个Framework(Espresso)下移动所有本地测试,工具测试以及所有内容?