• AS 进行单元测试


    以下为本人在AndroidStudio 2.0 上实测后得出的结论,不像网上那一堆堆的误人子弟的文章,都是过时的或者根本就是不对的。

    简介

    和eclipse需要配置清单文件不同,AndroidStudio自带的单元测试功能是不需要修改AndroidManifest.xml或gradle文件的,直接编写测试用例即可。
    使用AS新建一个工程时,在src目录下会自动创建三个目录:

    mian目录下为项目代码,androidTest目录下为编写Android测试用例使用,test目录下为编写Java测试用例使用。

    gradle文件默认也已配置【testCompile 'junit:junit:4.12'】


    Java测试用例

    默认test目录下有一个现成的ExampleUnitTest类,我们稍加修改
    1. /**
    2. * To work on unit tests, switch the Test Artifact in the Build Variants view.
    3. */
    4. public class ExampleUnitTest {
    5. @Test
    6. public void addition_isCorrect() throws Exception {
    7. int sum = 2 + 2;
    8. System.out.println("结果为:" + sum);
    9. assertEquals(4, sum);
    10. }
    11. }
    打开测试用例类,切换到Structure面板,鼠标选中要测的方法,右键–Run [方法名],即可进行Java用例测试。


    如果运行结果正确,Run面板会是绿色的

    否则是红色的,比如我们将其中一行代码修改为
    assertEquals(5, 2 + 2);

    我们也可以添加自己的测试类或测试方法,只不过我们的测试方法上要满足以下条件
    • 方法要为【public】访问权限
    • 要添加【@org.junit.Test】的注解
    • 方法不能带参数(因为你没办法传递参数啊)

    Android测试用例

    同样,默认androidTest目录下有一个现成的ApplicationTest,我们稍加修改
    1. /**
    2. * <a href="http://d.android.com/tools/testing/testing_android.html">Testing Fundamentals</a>
    3. */
    4. public class ApplicationTest extends ApplicationTestCase<Application> {
    5. public ApplicationTest() {
    6. super(Application.class);
    7. }
    8. //方法名必须以test开头,并且方法不能带参数
    9. public void testSimple() {
    10. int width = getScreenWidth(getContext());
    11. Log.i("bqt", "屏幕宽:" + width);
    12. Toast.makeText(getContext(), "屏幕宽:" + width, Toast.LENGTH_SHORT).show();
    13. //assertEquals(4, 2 + 2);//可以没有声明语句
    14. }
    15. /**
    16. * 获取屏幕宽
    17. */
    18. private int getScreenWidth(Context context) {
    19. DisplayMetrics metric = new DisplayMetrics();
    20. ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getMetrics(metric);
    21. return metric.widthPixels;
    22. }
    23. }
    运行后

    并且可以生成与运行环境(即Context)有关的日志(这才是最重要的用途,我们可以在不运行APP的情况下获取App所有数据)

    不过,很遗憾,我们不能直接操作UI(吐司没有弹出来)

    我们的测试方法上要满足以下条件
    • 方法要为【public】访问权限
    • 所有的测试方法必须以test作为前缀(上面的Java测试用例是要求有@Test的注解
    • 方法不能带参数(因为你没办法传递参数啊)
    不过很奇怪的是,ApplicationTestCase类提示过时了,但是又没提示用哪个替换……而且这是你自动帮我生成的呀……





  • 相关阅读:
    [转]当鼠标点击ListView下面的空白区域时,如何使ListView的原item选项仍然为选中状态
    [转]图像处理去噪的方法
    C# 图片上画连线时 自定义两点间的划线段样式
    C# WinForm (笨方法)根据不同的样式配置 设置窗体相关控件的背景 以改变窗体风格
    [转]sqlserver 数据类型 及使用考虑
    C# WinForm 关于窗体最大化时的是否全屏效果与是否遮盖任务栏
    [转]C# 画圆角矩形
    Ruby常用的内部变量
    document.getElementsByClassName的理想实现
    转:ie6与firefox操作iframe中DOM节点的一点不同
  • 原文地址:https://www.cnblogs.com/baiqiantao/p/b4a1112337ed5d2717b004950124434b.html
Copyright © 2020-2023  润新知