Java 每次测试后都应该运行tearDown()吗?

Java 每次测试后都应该运行tearDown()吗?,java,android,unit-testing,robotium,Java,Android,Unit Testing,Robotium,我认为tearDown()应该在每次测试之后运行,但我从日志中看到,它是在setUp()方法之后启动的。你们能澄清一下吗 public class LaunchManagerActivityTest extends ActivityInstrumentationTestCase2<LaunchManagerActivity> { private Solo solo; public LaunchManagerActivityTest() { super

我认为
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  ");

    }

您发布的类中没有测试,所以它只是运行安装程序,然后卸载。这是预期的行为,如果您有任何测试,它将运行:

constructor()
setUp();
testXXX();
tearDown();
如果您有两个测试,它将运行

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

setUp();
testXXX2();
tearDown();
记住JUnit3(android使用)中的一个测试必须从单词test开始,并且必须在同一个类中

要测试我所说的内容,请在中添加以下方法:

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

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

我想这是JUnit3。每次测试后都会运行拆卸。您的测试文件中有任何测试吗?JUnit将只运行在当前类中定义的测试。

您没有测试用例。所以,我相信这是意料之中的。是的,它是在每个testXXX方法之后调用的。可能您的测试没有输出任何东西。@RKajaMohideen我认为他在超类中至少隐藏了一个测试用例。否则,既不会调用
设置
也不会调用
拆卸
public void testXXX(){
    Log.d("Dev", "testXXX  ");
}

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