【问题标题】:Is tearDown() supposed to run after each test?tearDown() 是否应该在每次测试后运行?
【发布时间】:2013-01-26 09:21:12
【问题描述】:

我认为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 

【问题讨论】:

  • 您没有测试用例。所以,这是意料之中的,我相信。
  • 是的,它在每个 testXXX 方法之后调用。可能您的测试没有输出任何内容。
  • @RKajaMohideen 我认为他确实在超类中隐藏了至少一个测试用例。否则,setUptearDown 都不会被调用。

标签: java android unit-testing robotium


【解决方案1】:

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

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  ");
}

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2013-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多