如何将参数传递给测试项目?

时间:2012-05-04 13:19:29

标签: android junit3

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

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

在测试项目中阅读它,如: String z = System.getProperty(“string_array”);

但这不起作用。

是否有解决方案,解决方法或我完全错误的方式?

2 个答案:

答案 0 :(得分:0)

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

目前我没有代码示例,但您可能希望阅读Android Testing Fundamentals,因为它们对常规JUnit TestCase类有一些花哨的附加组件。

答案 1 :(得分: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中,您读取了intent并使用了一个返回带有随机字符的字符串的方法,但是如果testLetterz不为null,则返回testLetterz。

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

我使用了Robotium。