android - 为每个测试套件运行setUp()和tearDown()方法InstrumentationTestCase Android

标签 android testing automated-tests android-instrumentation

我正在实现一个测试自动化工具,并且我有一个扩展InstrumentationTestCase的类。例如:

public class BaseTests extends InstrumentationTestCase {

    @Override
    protected void setUp() throws Exception {
        super.setUp();
        Log.d(TAG, "setUp()");
    }

    @Override
    protected void tearDown() throws Exception {
        super.tearDown();
        Log.d(TAG, "tearDown()");
    }

    public void test_one() {
        Log.d(TAG, "test_one()");
    }

    public void test_two() {
        Log.d(TAG, "test_two()");
    }
}

当我运行BaseTests的测试时,setUp()方法被调用2次。一次在执行 test_one() 之前,另一次在执行 test_two() 之后。 TeaDown() 也会发生同样的情况,它在执行这两个方法中的每一个之后调用。

我在这里想做的是仅调用一次 setUp() 和tearDown() 方法来执行所有 BaseTests 测试。所以方法调用的顺序如下:

1) 设置()

2) test_one()

3) test_two()

4)tearDown()

有办法做到这样吗?

最佳答案

我通过使用以下方法解决了这个问题:

@BeforeClass
public static void setUpBeforeClass() throws Exception {
}

和:

@AfterClass
public static void tearDownAfterClass() throws Exception {
}

而不是setUp() 和tearDown()。 所以在你的情况下它将是:

import org.junit.AfterClass;
import org.junit.BeforeClass;
public class BaseTests extends InstrumentationTestCase {

@BeforeClass
protected static void setUp() throws Exception { 
    //do your setUp
    Log.d(TAG, "setUp()");
}

@AfterClass
protected static void tearDown() throws Exception {
    //do your tearDown
    Log.d(TAG, "tearDown()");
}

public void test_one() {
    Log.d(TAG, "test_one()");
}

public void test_two() {
    Log.d(TAG, "test_two()");
}
}

注解@BeforeClass和@AfterClass确保它在测试运行之前和之后分别只运行一次

关于android - 为每个测试套件运行setUp()和tearDown()方法InstrumentationTestCase Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24893248/

相关文章:

ruby-on-rails - 过滤掉 poltergeist 中的警告

python - 使用 python 脚本在命令提示符中运行命令

javascript - 我如何使用 TestCafe 访问应用程序操作?

android - 如何检测墙壁的长边以准备 mask 和重新着色

java - Android targetSdkVersion : accessing higher features, 和风险

c# - 如果没有对每个文本框进行唯一测试,如何检查多个文本框是否为空或为空?

javascript - 使用 shouldjs 检查无序数组中的值

java - 在 TravisCI 上测试

android - 我可以在 SQLite 事务中查询吗?

android - 是什么阻止了 Android 用户到达 s3?