美文网首页
Robotium编写测试用例如何模拟Junit4的BeforeC

Robotium编写测试用例如何模拟Junit4的BeforeC

作者: 思考的犀牛 | 来源:发表于2015-12-25 15:42 被阅读82次

在上一遍笔记博客中本以为只能在Setup和TearDown中做条件判断来实现Junit4的@BeforeClass和@AfterClass功能。今天查看SDK时发现其实是有现成的方法来实现这个功能的。
方法就是把编写的测试用例从继承自ActivityInstrumentationTestCase2改成继承成SingleLaunchActivityTestCase。
为什么这样做就可以了呢?请先看SingleLaunchActivityTestCase的Class Overview:
SingleLaunchActivityTestCaseClass OverviewIf you would like to test a single activity with an InstrumentationTestCase, this provides some of the boiler plate to launch and finish the activity in setUp() and tearDown(). This launches the activity only once for the entire class instead of doing it in every setup / teardown call.
大概意思就是说如果测试用例是继承自SingleLaunchActivityTestCase的话,setTup()和tearDown()会只运行一次而不是像ActivityInstrumentationTestCase2每调用一次函数都会运行一次。而这不刚好解决了我们的问题了吗!
代码如下:

package com.example.android.notepad.test;

import com.robotium.solo.Solo;

import android.test.ActivityInstrumentationTestCase2;
import android.test.SingleLaunchActivityTestCase;
import android.app.Activity;

@SuppressWarnings("rawtypes")
public class TCCreateNote2 extends SingleLaunchActivityTestCase{
//public class TCCreateNote2 extends ActivityInstrumentationTestCase2{

private static Solo solo = null;  
public Activity activity;  
  
private static final int NUMBER_TOTAL_CASES = 2;  
private static int run = 0;  
  
private static Class<?> launchActivityClass;  

//对应re-sign.jar生成出来的信息框里的两个值  
private static String mainActiviy = "com.example.android.notepad.NotesList";  
private static String packageName = "com.example.android.notepad";  

static {  

    try {  

        launchActivityClass = Class.forName(mainActiviy);  

    } catch (ClassNotFoundException e) {  

        throw new RuntimeException(e);  

    }  

}  
  
  
@SuppressWarnings("unchecked")  
public TCCreateNote2() {  
    super(packageName, launchActivityClass);  
}  

  
@Override  
public void setUp() throws Exception {  
    //setUp() is run before a test case is started.   
    //This is where the solo object is created.  
    super.setUp();   
    //The variable solo has to be static, since every time after a case's finished, this class TCCreateNote would be re-instantiated  
    // which would lead to soto to re-instantiated to be null if it's not set as static  
    //if(solo == null) {  
    TCCreateNote2.solo = new Solo(getInstrumentation(), getActivity());  
    //}  
}  
  
@Override  
public void tearDown() throws Exception {  
    //Check whether it's the last case executed.  
    run += countTestCases();  
    if(run >= NUMBER_TOTAL_CASES) {  
        solo.finishOpenedActivities();  
    }  
}  

public void testAddNoteCNTitle() throws Exception {  
      
    solo.clickOnMenuItem("Add note");  
    solo.enterText(0, "中文标签笔记");  
    solo.clickOnMenuItem("Save");  
    solo.clickInList(0);  
    solo.clearEditText(0);  
    solo.enterText(0, "Text 1");  
    solo.assertCurrentActivity("Expected EditTest Activity", "NoteEditor");  
    solo.clickOnMenuItem("Save");  
    solo.assertCurrentActivity("Expected NotesList Activity", "NotesList");  
      
    solo.clickLongOnText("中文标签笔记");  
    solo.clickOnText("Delete");  
}  
  
  
public void testAddNoteEngTitle() throws Exception {  
    solo.clickOnMenuItem("Add note");  
    solo.enterText(0, "English Title Note");  
    solo.clickOnMenuItem("Save");  
    solo.clickInList(0);  
    solo.assertCurrentActivity("Expected EditTest Activity", "NoteEditor");  
    solo.clearEditText(0);  
    solo.enterText(0, "Text 1");  
    solo.clickOnMenuItem("Save");  
    solo.assertCurrentActivity("Expected NotesList Activity", "NotesList");  
      
    solo.clickLongOnText("English Title Note");  
    solo.clickOnText("Delete");

相关文章

  • Robotium编写测试用例如何模拟Junit4的BeforeC

    Robotium的测试类ActivityInstrumentationTestCase2是继承于Junit3的Te...

  • Robotium编写测试用例如何模拟Junit4的BeforeC

    在上一遍笔记博客中本以为只能在Setup和TearDown中做条件判断来实现Junit4的@BeforeClass...

  • 软件测试基本流程

    1.需求分析(产品经理) 2.编写测试用例(测什么,怎么测) 3.评审测试用例 4.搭建测试环境 5.等待开发提交...

  • 1.软件测试流程

    1.需求分析 2.编写测试用例(测什么,怎么测) 3.评审测试用例 4.搭建测试环境 5.等待开发提交测试包 6....

  • APP功能测试点总结(转载)

    1.功能性测试: ——根据产品需求文档编写测试用例。 ——软件设计文档编写用例。 注意:就是根据产品需求文档编写测...

  • APP测试点全面总结(上)

    1.功能性测试: ——根据产品需求文档编写测试用例。 ——软件设计文档编写用例。 注意:就是根据产品需求文档编写测...

  • APP测试点总结(全面)

    1.功能性测试: ——根据产品需求文档编写测试用例。 ——软件设计文档编写用例。 注意:就是根据产品需求文档编写测...

  • 软件测试常见问题

    1、软件测试流程是什么? ①需求分析,需求评审②编写测试计划③编写测试用例,用例评审④执行测试,提交bug,回归测...

  • 测试基础---如何编写测试用例

    测试用例---如何编写测试用例 1. 测试用例-本质是文档 2. 软件测试-手段,保证软件质量 3. 软件测试流程...

  • 测试用例模板设计需要了解的点

    测试用例是进行测试的最小单元粒度。在编写测试用例之前需要很多准备工作去分析需求,提取测试点,然后根据提取的测...

网友评论

      本文标题:Robotium编写测试用例如何模拟Junit4的BeforeC

      本文链接:https://www.haomeiwen.com/subject/lxtbhttx.html