当前位置: 首页 > 知识库问答 >
问题:

单元测试在Android Studio Arctic Fox上不起作用

赵宏达
2023-03-14

我最近安装了Android Studio Arctic Fox v2020。3.1 Beta 2能够在我们的项目中使用JetpackCompose,因为在4.2.1版本中我无法这样做,因为Compose抛出了一个奇怪的构建错误,在北极狐上得到了修复。

问题是,在加载项目、更新我能够构建和运行的一些SDK/库之后,没有问题。然而,当我去运行单元测试时,我注意到IDE不再识别所有测试类。经过一些调查,我发现AS的新版本将不再识别JUnit配置。

正如你可以看到在下面的截图有没有办法运行这些测试,因为我通常会:

这一个来自Run/Debug Configurations,其中的JUnit测试属于未知类别:

最后,我创建了一个gradle配置来测试,但它只是在左侧说:

未收到测试事件

并在右侧抛出一个错误:

任务“功能:注册:testDevDebugUnitTest”的执行失败。找不到给定includes:com的测试。土星。Android特色:注册。注册视图模型测试

我想知道是否有人遇到过这个问题并能够解决?

感谢您的帮助!

更新01:

所以我决定把一切回滚,从头开始。这次我只更新了几件事:

  • 格雷德尔:com.Android工具。构建:gradle:7.0.0-beta02
  • 科特林:org。喷气式飞机。kotlin:kotlin-stdlib-jdk8:1.4.32
  • Crashlytics:com.google.firebase:firebase crashlytics渐变:2.6.1
  • 测试(核心、运行程序和规则):androidx。测试:核心/跑步者/规则:1.3.0

现在的问题是,当我通过Gradle运行它时,所有单元测试都失败了。我怀疑它在运行实际的测试函数之前没有运行@之前带注释的函数。或者我没有正确设置Gradle测试(下面的屏幕截图)?

共有3个答案

上官羽
2023-03-14

我尝试了一些发布的解决方案,但没有人为我工作。

对我有效的解决方案是使用java 8(版本1.8),而不是Java与Android Studio捆绑在一起,这是(11.0.10)的北极狐。

步骤

  • 文件-

[更新]在你的目标Android12的情况下,这需要AGP 7.0,需要Java11解决方案将不适用,否则上述解决方案将适合。

虞华彩
2023-03-14

我们还没有更新插件,所以我们的解决方案是为单元测试制作自己的Gradle运行配置。

这可以通过以下方式实现:

  1. 转到工具栏
耿志义
2023-03-14

如果你使用的是Android Studio Arctic Fox,你需要修改你的应用/构建。格拉德尔有点。

添加

android {
    testOptions {
        execution 'ANDROIDX_TEST_ORCHESTRATOR'

        unitTests.all {
            useJUnitPlatform() // <--- this is the important part
        }
    }
}

还要确保将junit-Engine添加到依赖项中

testImplementation 'org.junit.jupiter:junit-jupiter-engine:5.7.1'
 类似资料:
  • 我对SonarRunner有以下问题。 SonarQube 以及 Sonar 运行器无法拉取 junit 格式的 xml 报告 “单元测试”或“测试覆盖率”小组件不显示。它说没有数据。我正在按照此处描述的说明进行操作 我按照描述手动创建了XML格式的报告文件,但是仍然没有成功。 下面是 XML 文件 - TEST-Firefox_210_Mac_OS.com.company.BarTest.xml

  • 问题内容: 我已经通过两种方式为我的单元测试创​​建了用户: 1)为“ auth.user”创建一个大致如下的灯具: 我省去了看似不重要的部分。 2)在setUp函数中使用“ create_user”(尽管我宁愿将所有内容保留在我的Fixture类中): 请注意,两种情况下的密码均为辛普森。 我已验证该信息一次又一次正确地加载到测试数据库中。我可以使用User.objects.get来获取User

  • 我正在尝试使用intellij idea运行单个spock单元测试。 考虑: 在上面的测试中,当我转到测试主体和右上下文菜单时,我得到了两种类型的测试。一个是grails测试,另一个是junit测试。 关于这个问题,公认的答案建议使用jUnit运行程序。但是使用它,代码根本无法编译(可能是因为某些插件和其他类不可用)。 (我不确定,因为这是期望的行为,因为我只是运行一个测试,而不是所有的测试。所以

  • 问题内容: 我正在尝试使用Spring测试实体EJB3。 EJB本身不使用Spring,并且我想使生产JPA配置的重复保持最少(例如,不重复persistence.xml)。 我的单元测试似乎可以正常工作,但是即使我的单元测试应该是事务性的,数据仍会在各种测试方法之间持久存在…… 这是我的实体: 我的单元测试: 和我的appContext.xml: 当我运行测试时,test2失败,因为它找到了两个

  • 我正在尝试使用Mockito在SprinBoot应用程序中进行一些jUnit测试。 现在我的服务有了一些变量,可以从通过注释: 我试图通过像这样使用来测试这个: 但是,该属性不会被填充,并保持为。 这方面有很多TPOIC,但我还没能拼凑出一个解决方案。我看到解决方案建议,但它似乎想做一个集成测试,使服务加速,但由于无法连接到数据库,服务失败了。所以这不是我想要的。 我还看到一些解决方案建议我制作一

  • 问题内容: 我正在尝试在python单元测试中模拟常量。 我有一个名为 settings.py 的模块,其中包含一组常量,特别是我有一个: 然后在另一个模块中,我有一个使用REL_PATH变量的函数,如下所示: 在我的单元测试中,我有以下代码: 我希望通过这种方式将在“另一个/自定义/路径/”路径下创建csv文件,但仍在原始目录中创建csv文件。 我也试图这样做: 但最终结果是相同的。 我究竟做错