如何开始在Android中进行测试的说明似乎不一致:
http://developer.android.com/guide/topics/testing/testing_android.html
它说:
测试项目是您在其中创建的目录或Eclipse项目 测试包的源代码,清单文件和其他文件。 Android SDK包含带有ADT和Eclipse的Eclipse工具 命令行,为您创建和更新测试项目。工具 创建用于源代码和资源的目录 测试包的清单文件。
然而,它说:
您可以在文件系统的任何位置创建测试项目,但是 最好的方法是添加测试项目以使其根目录 tests /与main的src /目录处于同一级别 应用程序的项目。这有助于您找到与之相关的测试 申请。
然后它显示了一个项目结构,其中所有测试都在您的主项目下,而不是单独的项目。但是,如果您使用ADT插件,它将创建一个单独的项目。哪个是正确的,或者是最佳实践 - 单元测试的单独项目,还是同一个项目?
答案 0 :(得分:7)
在单独的项目中创建单元测试的正确方法 Android的?
我的意见,是的,这是最好的方法
如果使用相同的项目,manifest
中会有一些额外的代码,您需要在src中添加额外的类。
如果您创建一个单独的项目,它将不会影响我们的主项目代码
通过功能方式,两者都将以相同的方式工作
那么为什么要混淆:)
编辑:要使用相同的项目,您需要在清单文件中添加以下内容
<manifest>
<!-- For doing JUnit test--->
<instrumentation
android:targetPackage="com.your.package.where.testclasses"
android:name="android.test.InstrumentationTestRunner" />
<application ...>
<activity..>
<!-- For doing JUnit test -->
<uses-library android:name="android.test.runner" />
</application>
</manifest>
答案 1 :(得分:5)
可以在单独的项目中创建单元测试,但我完成它的方式只是使用不同的包。
这允许您在创建断言字段时轻松引用您可能需要的任何类。
我这样做有一个名为com..Data.Tests的包,并使用以下内容来定义我的测试:
public class AddressValidationTest extends
ActivityInstrumentationTestCase2<InitialActivity>
这使您可以将所有内容保留在一个项目中。
希望这有帮助!
编辑:您的混淆可能来自项目与包与类之间的Java术语。我认为在这种情况下,当他们说“项目”时,他们指的是一个能够进行单元测试的独立课程。EDIT2: 您不应该需要多个清单 在清单中包含以下任何测试活动:
<uses-library android:name="android.test.runner" />
<instrumentation android:label="All Tests"
android:name="com.App.Data.Tests.MyInstrumentationTestRunner"
android:targetPackage="com.App.UI" />
答案 2 :(得分:1)
在我看来,为测试用例创建单独的项目是很好的。 特别是如果您的项目需要早期版本的JRE。对于Android项目,这可能不适用,但适用于需要较旧JRE的嵌入式Java项目。
由于大多数测试框架至少需要JDK 1.5或更高版本,因此为测试类创建单独的项目是唯一的解决方案。