Android JUnit:定义其他Application子类

Nic*_*ick 5 junit android code-coverage

因此,对于我的普通Android项目,我在AndroidManifest.xml中具有以下内容:

<application android:name=".utilities.App" ...>
     ....
</application>
Run Code Online (Sandbox Code Playgroud)

然后我有我的App课:

public class App extends Application {
     ....
}
Run Code Online (Sandbox Code Playgroud)

然后,我有一个与Android项目关联的Android JUnit Test项目。一切都很好,我可以编写JUnit测试。但是,我试图在我的JUnit测试中运行代码覆盖,并且结果results肿。原因是因为调用和初始化了我的App类,就像我的应用程序实际上是在启动一样。我不希望在运行JUnit测试或代码覆盖率时执行自定义App类。我需要进行JUnit测试的任何设置都将使用适当的JUnit setup()方法。有什么方法可以阻止它执行我的自定义App类,或者不将由于创建App类而执行的任何类/方法/行不计入代码覆盖率?

Nic*_*ick 0

除非有人有更好的想法,否则我发现的临时解决方案将会起作用。

  • 进入主 Android 项目的 AndroidManifest.xml。
  • 将 android:name 属性从“.utilities.App”更改为“android.app.Application”
  • 运行代码覆盖率实用程序/JUnit 测试
  • 将 android:name 属性从“android.app.Application”更改回“.utilities.App”
  • 将应用程序重新部署到设备上(以便在代码覆盖率/JUnit 测试外部运行时使用正确的应用程序类)

我确信真正的解决方案是使这个过程自动化,但我太懒了,不愿意这样做,而且感觉很黑客且错误。但至少这是一个解决方法,除非有人有任何想法。