Android 和 JUnit : How to add individual tests to test suite?

标签 android junit

我已经为此苦苦挣扎了一段时间。在 JUnit/Android 中创建测试套件时,我可以执行以下操作:

  • 添加与套件存在于同一包中的所有测试(在所有类中)
  • 添加包含测试方法的特定类

但是,我完全无法执行以下操作:

  • 将来自特定类的特定测试方法添加到测试套件。

现在,我明白这应该是可能的,因为有无数例子证明了这一点。

它应该是这样工作的:

包含测试方法的测试类:

import com.frank.android.lookup.SomeClass;
import android.test.AndroidTestCase;

public class ArithmeticsTests extends AndroidTestCase {
    SomeClass sctest;

    protected void setUp () throws Exception {
        sctest = new SomeClass();
        super.setUp();
    }

    public void testAddNumbers () {
        assertEquals(9, sctest.addNumbers(3, 6));
    }

    public void testSubtractNumbers () {
        assertEquals(2, sctest.subtractNumbers(6, 4));
    }

    protected void tearDown () throws Exception {
        super.tearDown();
    }
}

这是测试套件类:

import junit.framework.TestSuite;

public class ProjectTestSuite_SomeTests extends TestSuite {

    public static Test suite () {
        TestSuite suite = new TestSuite("ArithmeticsTests");
        suite.addTest(new ArithmeticsTests("testAddNumbers"));
        suite.addTest(new ArithmeticsTests2("testSubtractNumbers"));

        return suite;
    }
}

现在,我尝试添加单独测试方法的两行导致此错误:

The constructor ArithmeticsTests(String) is undefined

现在,我环顾四周,找不到任何解释。似乎缺少某些东西,因为它不明白我要做什么。它提示的“字符串”实际上是方法的名称——我不是想将字符串传递给类的构造函数——我是想将类的方法添加到测试套件中。

我在这里使用的是 Android SDK 中包含的 JUnit 版本,我没有安装任何其他相关的东西。有什么东西不见了吗? (显然有,位什么?)

编辑:

我在 ArithmeticsTests 类中添加了一个构造器:

public ArithmeticsTests (String s) {}

现在上面的错误没有了。

但是,当我运行测试套件时,出现此错误:

testSuiteCreationFailed
....
Caused by: java.lang.NullPointerException: Method name must not be null.

最佳答案

我遇到了同样的问题并发现,虽然 AndroidTestCase 没有采用 String 参数的构造函数,但它确实有一个 setName(String名称) 方法。通过调用setName 方法,您可以将单独的方法添加到测试用例中。 使用示例中的代码,您的测试套件可能如下所示:

import junit.framework.TestSuite;

public class ProjectTestSuite_SomeTests extends TestSuite {

    public static Test suite () {
        TestSuite suite = new TestSuite("ArithmeticsTests");
        ArithmeticsTests arithmeticsTests = new ArithmeticsTests();
        arithmeticsTests.setName("testAddNumbers");
        suite.addTest(arithmeticsTests);
        ArithmeticsTests2 arithmeticsTest2 = new ArithmeticsTests2();
        arithmeticsTest2.setName("testSubtractNumbers");
        suite.addTest(arithmeticsTest2);

        return suite;
    }
}

关于Android 和 JUnit : How to add individual tests to test suite?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14317687/

相关文章:

Ant 与 JUnit 任务 - OutOfMemoryError

java - JMockit - 意外调用

javascript - 尝试在android中使用jsoup提交表单

java - RecyclerView 中的 imageButton 不显示

android - 使用选择器和 isEnabled() 禁用 ListView 项

javascript - 如何在 TabNavigator 上显示图标以响应 native

java - 如何在java中模拟Session对象

spring - 在不同项目中使用多个 Spring 上下文运行 JUnit 测试

java - (Java/Junit)我设置了类路径,现在无法在命令提示符下编译测试文件

android - 与 FragmentTabHost 中的 fragment 通信