0

我有一个从字母表中随机抽取字符并处理它们的应用程序。我是 JUnit 的新手并尝试使用它。我想通过提供预定义字符并测试它是否正确处理它们来测试应用程序。如何将字符传递给测试项目?

我尝试在测试用例中设置 System.property,例如: System.setProperty("string_array", LETTERS);

并在测试项目中读取它,例如: String z = System.getProperty("string_array");

但这不起作用。

有解决方案,解决方法还是我完全走错了路?

4

2 回答 2

0

我必须承认我还没有在 Android 上做太多的单元测试。但理论上您不应该更改测试主题(您的项目)中的代码来进行单元测试。使用 JUnit,您可以进行白盒测试,这意味着您不必一次测试整个应用程序,而是测试特定的方法或对象。从 JUnit 中,您可以实例化项目内部类并使用您喜欢的任何数据提供测试方法,这就是您将数据传输到测试对象的方式。

目前我没有给你的代码示例,但你可能想通读Android 测试基础知识,因为它们对常规的 JUnit TestCase 类有一些花哨的附加组件。

于 2012-05-04T20:45:42.590 回答
0

解决方案是 setActivityIntent。

您可以通过向测试的 Activity 发送意图来设置测试项目,如下所示:

public void setUp() throws Exception {
    Intent i = new Intent();
    i.putExtra("testLetterz", LETTERS);
    setActivityIntent(i);
    solo = new Solo(getInstrumentation(), getActivity());
}

然后像这样运行测试:

@Smoke
public void testCheckOneWord() throws Exception {
    for(int i = 0; i < 5; i++) {
        int r = -1;
        Movable m;
        do {
            r++;
            m = (Movable) solo.getView(Movable.class, r);
        } while(!(m.getLetter() == LETTERS.charAt(i)));
        int x = m.getPosX();
        int y = m.getPosY();
        solo.drag(x, 10, y, 10+i*Movable.getDropSize(), 1);

    }
    solo.clickOnButton("Check");
    boolean expected = true;
    boolean actual = solo.searchText("2/10");
    assertEquals("The test is not found", expected, actual);
}

在测试的 Activity 中,您读取了意图并使用了返回带有随机字符的字符串的方法,但如果 testLetterz 不为空,则返回 testLetterz。

在此示例中,我将包含字母的视图拖到放置区,然后检查它们是否在单词列表中。

我用过机器人。

于 2012-05-07T08:32:48.857 回答