我有一个应用程序从字母表中抽取随机字符并处理它们。我是JUnit的新手并尝试使用它。我想通过提供预定义的字符来测试应用程序,并测试它是否正确处理它们。如何将字符传递给测试项目?
我尝试在测试用例中设置System.property,如: System.setProperty(“string_array”,LETTERS);
在测试项目中阅读它,如: String z = System.getProperty(“string_array”);
但这不起作用。
是否有解决方案,解决方法或我完全错误的方式?
答案 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。