如何禁用Android Studio单元测试(androidTest)

qvtsj1bj  于 2023-03-11  发布在  Android
关注(0)|答案(3)|浏览(920)

我已经将一个eclipse项目导入android studio
不知何故,它发现我的另一个eclipse项目包含导入项目的单元测试代码
它引入了该代码并将其放在src/androidTest目录中
我真的不希望它这样做,但他们现在就在那里,并导致构建失败
有没有办法关闭androidTest的东西?这样我就可以专注于应用程序是否真的构建了?
也许是通过Gradle设置?(这是我第一次接触Gradle)
也许我只需要删除所有的androidTest java文件,但这似乎有点最终。

fquxozlt

fquxozlt1#

将以下代码放入应用的gradle脚本:

tasks.configureEach { task ->
    if (task.name.equals("lint")) {
        //this is for speed up build
        task.enabled = false
    }
    if (task.name.contains("Test")) {
        //this is what you need
        task.enabled = false
    }
}

当Gradle添加任务时,此代码将检查任务名称。如果此任务是“lint”(check here),则不需要每次构建。如果此任务有“任务”一词,则可以跳过。

:app:preDebugAndroidTestBuild SKIPPED
:app:compileDebugAndroidTestAidl SKIPPED
:app:processDebugAndroidTestManifest SKIPPED
:app:compileDebugAndroidTestRenderscript SKIPPED
:app:generateDebugAndroidTestBuildConfig SKIPPED
:app:generateDebugAndroidTestResValues SKIPPED
:app:generateDebugAndroidTestResources SKIPPED
:app:mergeDebugAndroidTestResources SKIPPED
:app:splitsDiscoveryTaskDebugAndroidTest SKIPPED
:app:processDebugAndroidTestResources SKIPPED
:app:generateDebugAndroidTestSources SKIPPED

我不知道这些任务是什么。但是当我跳过我的项目时,除了速度外什么都不会影响(不是很大,因为我没有测试文件),这是Gradle构建系统的一个痛苦。
我希望这对你有帮助。

8i9zcol2

8i9zcol22#

有些人可能会发现这很有用:如果您使用的是JUnit,则可以在测试方法上使用@Ignore命令来忽略整个测试方法。

示例:

@Ignore("This test will be ignored")
@Test
public void my_test_method() {
    // test code here...
}
zte4gxcn

zte4gxcn3#

在Android Studio中重建项目后,项目中的所有源文件都将重新编译。一旦您的仪器测试不可编译,就会启动许多不同的任务,包括导致构建中断的:compileDebugAndroidTestJavaWithJavac

在Android Studio中调用重建只是一个用于将这些任务传递给gradle的UI:
Gradle任务[:应用程序:生成调试源,:应用程序:生成调试Android测试源,:应用程序:准备调试单元测试依赖项,:应用程序:模拟Android Jar,:应用程序:编译调试源,:应用程序:编译调试Android测试源,:应用程序:编译调试单元测试源]
也就是说,没有明显的方法可以修改它。

解决方法:

  • 注解掉 androidTest 中损坏的文件
  • 删除/重命名 androidTest 目录
  • 使用 * Android plugin for Gradle * 生成项目并传递除与InstrumentalTests相关的命令之外的所有命令
  • 避免生成/重建解决方案,只需添加(如果还不存在)Android应用程序配置并自行构建应用程序,无需工具测试

希望能有所帮助。

相关问题