我在Android Studio3.0.1和Kotlin中运行instrumentation tests
时遇到了一些问题(我在以前的Android Studios和Java中没有遇到这样的问题)。我在AndroidTest
包中创建了这个(非常简单的)类[reference],它如下所示:
@RunWith(AndroidJUnit4::class)
@LargeTest
class DiscoverActivityTest {
@JvmField
@Rule
val mDiscoverActivityTestRule = ActivityTestRule<DiscoverActivity>(DiscoverActivity::class.java)
@Test
fun onViewLoadedShowDiscoverFragment() {
onView(withId(R.id.discoverFragmentView)).check(matches(isDisplayed()))
}
}
当我尝试运行测试时,有两个问题。首先,它希望在控制台中运行测试,而不打开仿真器或将apk包部署到设备(因为这只是一个正常的本地单元测试)。此外,我还会收到以下错误消息:
找不到类:“com.site.application.discover.discoverActivityTest”空测试套件。
我想在edit configuration
选项中强制执行检测运行程序(例如,类似于此解决方案),但在新的Android Studio 3.0.1中没有这样的选项(例如,与2.3相比)
更新:
以下是我的gradle
文件内容:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
compileSdkVersion 27
defaultConfig {
applicationId "com.site.application"
minSdkVersion 17
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
flavorDimensions "default"
productFlavors {
dev {
dimension "default"
applicationIdSuffix '.dev'
versionNameSuffix "-dev"
resValue "string", "app_name", "Application Dev"
resConfigs "en", "xxhdpi"
}
mock {
dimension "default"
applicationIdSuffix '.mock'
versionNameSuffix "-mock"
resValue "string", "app_name", "Shazam Clone Mock"
}
prod {
dimension "default"
resValue "string", "app_name", "Shazam Clone"
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
implementation "com.android.support:appcompat-v7:$rootProject.ext.supportLibraryVersion"
implementation "com.android.support:cardview-v7:$rootProject.ext.supportLibraryVersion"
implementation "com.android.support:design:$rootProject.ext.supportLibraryVersion"
implementation "com.android.support:recyclerview-v7:$rootProject.ext.supportLibraryVersion"
implementation "com.android.support:support-v4:$rootProject.ext.supportLibraryVersion"
implementation "com.android.support.test.espresso:espresso-idling-resource:$rootProject.ext.espressoVersion"
implementation "com.android.support.constraint:constraint-layout:$rootProject.ext.constraintLayoutVersion"
implementation "com.google.code.gson:gson:$rootProject.ext.gsonVersion"
implementation "com.github.bumptech.glide:glide:$rootProject.ext.glideVersion"
implementation "com.github.ybq:Android-SpinKit:$rootProject.ext.spinKitVersion"
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
testImplementation "junit:junit:$rootProject.ext.junitVersion"
testImplementation "org.mockito:mockito-core:$rootProject.ext.mockitoVersion"
testImplementation "com.nhaarman:mockito-kotlin-kt1.1:1.5.0"
androidTestImplementation "com.android.support.test.espresso:espresso-core:$rootProject.ext.espressoVersion"
androidTestImplementation "com.android.support.test.espresso:espresso-contrib:$rootProject.ext.espressoVersion"
androidTestImplementation "com.android.support.test.espresso:espresso-intents:$rootProject.ext.espressoVersion"
}
值得一提的是,如果我在run/debug configurations
中的Android Instrumented tests
下创建一个新配置,选择此配置并使用此配置运行项目(Shift+F10),那么检测测试将运行得很好(所有这些测试一起运行)。但是当我尝试单独运行测试时(使用每个单独测试方法或测试类旁边的小播放图标),将创建一个以测试本身命名的unknowle
类型的新配置(例如上面代码中的DiscoverActivityTest.onViewLoadedShowDiscoverFragment
),然后IDE尝试使用该配置来运行测试;因此出现了错误。
有什么建议吗?
提前致谢
最终更新:经过Android Studio的重新安装,这个问题得到了解决。所以我猜是IDE的配置出了问题什么的。
android {
defaultConfig {
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
}
尝试在您的build.gradle中添加“TestInstrumentationRunner”。
Android Studio 1.1 添加了单元测试支持,详细请看 Unit testing support。本章的其余部分描述的是 “instrumentation tests”。利用 Instrumentation 测试框架可以构建独立的测试 APK 并运行在真实设备(或模拟器)中进行测试。
英文原文:http://emberjs.com/guides/testing/unit/ 单元测试用于测试代码的一个小片段,确保其功能正常。与集成测试不同,单元测试被限定在一个范围内,并且不需要Ember应用运行。 全局 vs 模块 过去如果没有作为一个全局变量加载整个Ember应用,要对应用进行测试非常困难。通过使用模块(CommonJS,AMD等)来编写应用,可以只加载被测试的部分,而不用将其
我有一个Android应用程序的测试套件,所有单元测试都运行良好。但是,每当我对一个单元测试类(例如,)进行一个更改时,当尝试再次运行该类时,我会得到以下消息 如果我做了一个gradle clean,然后再次运行类测试,它运行得很好(但需要4分钟来做……),但随后一个新的更改会再次破坏它。 有什么解决方法吗?我不确定应该发布哪种测试配置。我正在使用单元测试工件,我的测试位于文件夹中
22.13.5.测试检测 测试任务检测哪些类是通过检查编译测试类的测试类。默认情况下它会扫描所有.calss文件.可以自定义包含/排除哪些类需不要要被扫描.所使用不同的测试框架(JUnit/ TestNG)时测试类检测使用不同的标准。 当使用JUnit,我们扫描的JUnit3和JUnit4的测试类。如果任一下列条件匹配,类被认为是一个JUnit测试类: 类或父类集成自TestCase或Groovy
我试图使用XML和TestNG运行一个测试套件,但是我总是同时使用Eclipse和命令行得到相同的消息: 该文件已正确读取,但测试似乎没有运行。 以下是我的testng.xml的内容: 这是我的目录结构在Eclipse中的样子: 此外,这也是我试图通过命令行运行测试套件的方式: 我尝试过通过eclipse清理项目,但似乎没有帮助。我也试过跑步: < code>mvn clean,但它也没有完成工作
单元测试方法上方是否需要注释? 是否需要在方法前缀“test”,或者这只是用于JUnit测试? 可以在的子包中进行测试吗? 但是这篇文章的主要问题是为什么测试运行者没有检测到我的测试?