2013-02-11 79 views
2

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

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 
+0

您没有测试用例。所以,我相信这是预料之中的。 – 2013-02-11 09:38:15

+0

是的,它在每个testXXX方法之后被调用。可能你的测试只是不输出任何东西。 – 2013-02-11 09:38:51

+1

@RKajaMohideen我认为他至少有一个隐藏在超类中的测试用例。否则,不会调用'setUp'和'tearDown'。 – 2013-02-11 09:39:53

回答

7

你必须在类中没有测试你张贴所以它只是运行安装程序,然后拆除。这是预期的行为,如果您有任何测试可以运行:

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

如果您有两个测试中,它会运行

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

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

记得在JUnit 3中(其中Android使用)测试有从单词测试开始,并在同一班。

来测试什么,我说,添加以下方法:

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

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

我想这是JUnit3。每次测试结束后都会进行拆卸。你的测试文件中有没有测试? JUnit将仅运行当前类中定义的测试。

相关问题