Android 单元测试相关介绍

本文主要介绍Android测试相关用法


JUnit4 相关学习介绍

导入依赖库

1
2
3
dependencies {
testCompile "junit:junit:4.12"
}

编写需要测试的代码

1
2
3
4
5
public class TestCode{
public int addNum(int num1,int num2){
return num1+num2;
}
}

创建对应测试代码

  • 对应步骤
    • 在Android studio project中,选中待测试类右键,选择Go To,下一步Test。
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      public class TestCodeTest {

      @Test
      public void addNum() throws Exception {
      TestCode mTestCode = new TestCode();
      int sum = mTestCode.addNum(2, 2);
      //验证sum 与 4 是否相等
      assertEquals(4, sum);
      }

      }

测试步骤

  • 右键选择待测试方法,Run 方法名()

Junit4相关语法

  • JUnit4常用的annotation

    • @Before:初始化方法 对于每一个测试方法都要执行一次(注意与BeforeClass区别,后者是对于所有方法执行一次)
    • @After:释放资源 对于每一个测试方法都要执行一次(注意与AfterClass区别,后者是对于所有方法执行一次)
    • @Test:测试方法,在这里可以测试期望异常和超时时间
    • @Test(expected=ArithmeticException.class)检查被测方法是否抛出ArithmeticException异常
    • @Ignore:忽略的测试方法
    • @BeforeClass:针对所有测试,只执行一次,且必须为static void
    • @AfterClass:针对所有测试,只执行一次,且必须为static void
    • @Test(timeout=): 为测试方法设定超时时间。
    • @RequiresDevice:物理设备上运行。
    • @SdkSupress:限定最低SDK版本。例如@SDKSupress(minSdkVersion=18)。
    • @SmallTest,@MediumTest和@LargeTest:测试分级。
  • JUnit4单元测试用例执行顺序:
    @BeforeClass -> @Before -> @Test -> @After -> @AfterClass;

  • 每个测试方法的调用顺序为:
    @Before -> @Test -> @After;

  • 相关验证方法 示例:

    1
    2
    3
    4
    5
    6
    //代码一
    String msg = “hello,World”;
    assertTrue(msg.indexOf(“World”)!=-1);
    //代码二
    String msg = “hello,World”;
    assertThat(msg.contains(“World”),equals(true));
  • 更多类似测试代码

总结

  • 单元测试只是测试一个方法单元
  • 可用于
    • 有具体返回结果,返回结果是否符合预期结果。
    • 或者验证,函数内部的一些属性或者状态,在函数没有返回值的情况下。
    • 或者,验证一些点击事件等。

Espresso

导入依赖库

1
2
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
androidTestCompile 'org.hamcrest:hamcrest-library:1.3'

相关使用介绍

  • Run–>Record Espresso Test

    • onView()找元素
    • perform()操作元素
    • check()检查结果
  • Demo示例

UI Automator

导入依赖库

1
2
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
androidTestCompile 'org.hamcrest:hamcrest-library:1.3'

相关使用介绍

UI Automator仅支持Android 4.3(API Level 18)及以上版本。
使用流程:

  • 获得一个UiDevice对象,代表我们正在执行测试的设备。该对象可以通过一个getInstance()方法获取,入参为一个Instrumentation对象:UiDevice mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());

  • 通过findObject()方法获取到一个UiObject对象,代表我们需要执行测试的UI组件。

  • 对该UI组件执行一系列操作。

  • 检查操作的结果是否符合预期。

  • Demo示例