【问题标题】:Android Unit Testing Robolectric:3.3.2 - No such manifest file: build\intermediates\manifests\full\debug\src\main\AndroidManifest.xmlAndroid 单元测试 Robolectric:3.3.2 - 没有这样的清单文件:build\intermediates\manifests\full\debug\src\main\AndroidManifest.xml
【发布时间】:2017-05-15 03:10:44
【问题描述】:

当我运行测试时,显示以下错误

No such manifest file: build\intermediates\bundles\debug\AndroidManifest.xml

java.lang.ClassCastException: android.app.Application cannot be cast to gyg.android.reviews.ReviewApplication

以下是 Gradle 依赖项

compile group: 'org.mockito', name: 'mockito-all', version: '2.0.2-beta'
testCompile "org.robolectric:robolectric:3.3.2"
testCompile 'org.mockito:mockito-core:1.10.19'
testCompile 'junit:junit:4.12'

这就是我开始我的测试课的方式

@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class)
public class ReviewListPresenterTest {

我正在使用 Roboelectric 3.3.2 和 Android Studio 2.3.2 快速帮助将不胜感激!

【问题讨论】:

  • 我在使用完全相同版本的 Roboelectric 和 Android Studio 时遇到了同样的错误。经过一番挖掘,我发现合并后的清单在build\intermediates\manifests\full\debugbuild\intermediates\manifests\instant-run\debug 下。好像AS改变了输出目录结构,Robolectric还没有跟上。
  • 我在 Robolectric GitHub 上提交了一个问题:github.com/robolectric/robolectric/issues/3110
  • “我记得昨天我关闭 Android Studio 的时候。这些测试正在运行,但现在不在我的新项目中。”自上次运行这些测试以来,您是否更新了 Android Studio?
  • 是的,我更新了一些 SDK 更新,但没有更新 Android 版本。
  • 你升级 Android Studio 了吗?

标签: android unit-testing android-studio android-testing robolectric


【解决方案1】:

问题似乎出在包含多个模块的 Android Studio 项目上。有两种解决方案:

  1. 从命令行运行 Robolectric 测试:

    gradlew :app:testDebugUnitTest
    
  2. 从 Android Studio 运行 Robolectric 测试:

    打开“编辑运行配置”对话框。在 Defaults > Android JUnit 下,将工作目录设置为包含您正在测试的模块的文件夹。您可能还需要为每个现有的运行配置设置此选项。如果您在多个模块中进行测试,则需要将每个运行配置的工作目录设置为相应的模块。

【讨论】:

  • 所以如果我将该项目发送给其他人,该人是否也会为他身边的每个测试类进行这些配置以成功运行我所有的笔试?
  • @SalmanNazir 如果包含 .idea 项目文件夹,它包含一个带有运行配置的 XML 文件。您还可以导出 Android Studio 设置并将生成的 JAR 文件与您的项目一起发送。其他人将需要导入这些设置。
猜你喜欢
  • 2020-07-24
  • 1970-01-01
  • 2020-05-29
  • 2019-11-03
  • 1970-01-01
  • 2015-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多