赞
踩
沿着金字塔逐级向上,从小型测试到大型测试,各类测试的保真度逐级提高,但维护和调试工作所需的执行时间和工作量也逐级增加。因此,编写的单元测试应多于集成测试,集成测试应多于端到端测试。虽然各类测试的比例可能会因应用的用例不同而异,但我们通常建议各类测试所占比例如下:小型测试占 70%,中型测试占 20%,大型测试占 10%。
按照测试金字塔模型以及投入/产出比,我们可以得知越向下回报率越高,所以应该使用大量的单元测试和全面的接口测试来覆盖产品提供的基本逻辑和功能,使用少量的集成(UI)测试来进行前端界面的功能验证。其中,单元测试的成本最小,也更容易发现问题。
src下有3个文件目录:
src目录结构树如下:
在module gralde中,添加如下配置项。
1) 配置依赖项
2) 配置测试运行器
插桩单元测试的用例代码,需要放在module_name/src/androidTest[VariantName]/java/ 目录下。
一般在新建工程时,AS默认会自动创建这些目录 。 当然也可以手动创建:选择任意一个源代码方法,调出创建新测试的窗口(ctrl+shift+T),如下图:
点击进入“Create Test”对话框,然后选择Destination Package栏的“...”来选择包结构。如下图:
点击“OK”之后,会生成相应的测试目录。
使用AndroidX Test API+JUni4编写测试用例。插桩单元测试类应该是一个 JUnit 4 测试类。
@Test:将一个方法标记为测试方法,被@Test注解的方法不允许有参数,且返回值需为void ;
@Ignore:忽略一个测试方法,在运行类测试时,被此注解标记的方法将不被执行;
@Before:在每一个被@Test标记的方法之前运行;
@After:在每一个被@Test标记的方法之后执行;
@BeforeClass:在所有测试方法之前执行,被注解的方法必须是public static;
@AfterClass:在所有测试方法之后执行,被注解的方法必须是public static ;
@Rule:方法级规则,在每个测试方法执行时都会被调用;
@ClassRule :Class级规则,在测试类被执行时调用,只调用一次;
推荐使用Google的Truth断言。
类名+Test 或者 类名+InstrumentedTest。例如:
对于接口类,如果接口类名的字母I开头,其测试类名开头不用包含字母I。
使用build task进行编译时,如果project中有超过1个的application module,则编译module时,需指定module名。命令格式如下:
$./gradelw :moduleName:taskName
例如:
$./gradlew :app:build
可用./gradlew projects查看module名。例如:
使用install task进行安装。命令格式如下:
$./gradelw :moduleName:install+variantName
例如:
$./gradlew :app:installDebugAndroidTest
使用connected task进行测试,命令格式如下:
$./gradlew connectedAndroidTest
或者使用adb命令启动测试。命令格式如下:
$adb shell am instrument [flags] <test_package>/<runner_class>
如果在app的gradle文件中,没有另行指定test_package,在app的package_name后追加.test即可。例如:
- $adb shell am instrument -w
- com.example.junitframework.test/androidx.test.runner.AndroidJUnitRunner
详情参考gradle官方文档和Android Studio官方文档。
1) 使用gradle
./gradlew :module_name:connectedVariantNameAndroidTest
$./gradlew :app:cAT //cATconnectedAndroidTest
module_name/build/reports/androidTests/connected.html
https://developer.android.google.cn/studio/test/command-line#RunTestsGradle
2) 使用adb
Usage:
adb shell am instrument [flags] <test_package>/<runner_class>
eg:
$adb shell am instrument -w com.example.junitframework.test/androidx.test.runner.AndroidJUnitRunner
1) xml格式
https://github.com/272664150/QJunitFramework
2) html格式
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。