是否应该在每次测试后运行tearDown()?

时间:2013-02-11 09:36:05

标签: java android unit-testing robotium

我认为tearDown()应该在每次测试后运行,但我从日志中看到的是它是在setUp()方法之后启动的。你们能澄清一下吗?

public class LaunchManagerActivityTest extends ActivityInstrumentationTestCase2<LaunchManagerActivity> {
    private Solo solo;

    public LaunchManagerActivityTest() {
        super(LaunchManagerActivity.class);

    }

    protected void setUp() throws Exception {
        super.setUp();
        Log.e("Dev", "setup");

        solo = new Solo(getInstrumentation(), getActivity());

    }

    protected void tearDown() throws Exception {
        super.tearDown();
        Log.e("Dev", "tearDown  ");

    }

输出:

02-11 11:33:33.095: E/Dev(26779): setup
02-11 11:33:34.395: E/Dev(26779): tearDown 

2 个答案:

答案 0 :(得分:7)

您在发布的课程中没有测试,因此它只是运行设置然后拆解。这是预期的行为,如果你有任何测试它会运行:

constructor()
setUp();
testXXX();
tearDown();

如果你有两个测试它会运行

constructor()
setUp();
testXXX();
tearDown();

setUp();
testXXX2();
tearDown();

请记住junit 3中的测试(android使用)必须从单词test开始并且在同一个类中。

测试我所说的添加以下方法:

public void testXXX(){
    Log.d("Dev", "testXXX  ");
}

public void testXXX2(){
    Log.d("Dev", "testXXX2  ");
}

答案 1 :(得分:0)

我想这是JUnit3。每次测试后,tearDown都会运行。你的测试文件中有测试吗? JUnit将只运行当前类中定义的测试..