Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何将参数传递给测试项目?_Android_Junit3 - Fatal编程技术网

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

Android 如何将参数传递给测试项目?,android,junit3,Android,Junit3,我有一个应用程序,它从字母表中抽取随机字符并处理它们。我是JUnit新手,尝试使用它。我想通过提供预定义字符并测试它是否正确处理这些字符来测试应用程序。如何将字符传递给测试项目 我尝试在测试用例中设置System.property,如下所示: System.setProperty字符串_数组,字母 并在测试项目中阅读,如: 字符串z=System.getPropertystring_数组 但这不起作用 有没有解决方案、解决办法,或者我完全走错了路?我必须承认,我还没有在Android上做过多少单

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

我尝试在测试用例中设置System.property,如下所示: System.setProperty字符串_数组,字母

并在测试项目中阅读,如: 字符串z=System.getPropertystring_数组

但这不起作用


有没有解决方案、解决办法,或者我完全走错了路?

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


目前我还没有代码示例,但您可能希望通过阅读,因为它们在常规JUnit TestCase类中有一些奇特的附加组件。

解决方案是setActivityIntent

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

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);
}
然后按如下方式运行测试:

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);
}
在测试的活动中,您读取了意图,并使用了一个返回带有随机字符的字符串的方法,但如果testLetterz不为null,则返回testLetterz

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


我使用了Robotium。

我们通常在测试项目中用测试数据模拟测试上下文,并将其传递给被测试的应用程序。很少需要通过测试项目之外的测试。