Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.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 ui线程执行到底?_Android_Junit_Tdd - Fatal编程技术网

测试时如何让android ui线程执行到底?

测试时如何让android ui线程执行到底?,android,junit,tdd,Android,Junit,Tdd,我有一个应用程序可以从网上下载文件。通过单击按钮触发下载操作,然后它将启动一个新线程来下载此文件 我现在想做的是测试下载是否成功 因此,我编写了以下测试代码: private void testGenerateFile() throws Exception { try { runTestOnUiThread(new Runnable() { @Override public void run() {

我有一个应用程序可以从网上下载文件。通过单击按钮触发下载操作,然后它将启动一个新线程来下载此文件

我现在想做的是测试下载是否成功
因此,我编写了以下测试代码:

private void testGenerateFile() throws Exception {
    try {
        runTestOnUiThread(new Runnable() {
            @Override
            public void run() {
                ((EditText)mActivity.findViewById(R.id.edit_server)).setText("http://192.168.120.248/phonebook.xml");
                click(R.id.ok);
            }
        });
    } catch (Throwable e) {
    }
}

但是在执行之后,文件还没有被下载。但是如果我在末尾添加
Thread.sleep(2000)
,则会生成该文件。但我认为这不是一个适当的解决办法。你能帮助我吗?谢谢。

如果您知道文件的下载位置和大小,您可以定期检查(直到预定义的持续时间)正在创建和下载的文件。如果文件大小符合原始大小,您可以假定文件已成功下载。

这真是个好主意。你的意思是我应该继续检查一下这个文件是否是生成器。如果很长一段时间后没有生成此文件,则下载必须失败。这是正确的,除非应用程序以其他方式处理下载失败(例如完全删除文件)。取决于正在测试的应用程序。或者可能测试下载文件的要求不是很严格。我不应该测试有关远程资源的内容。很抱歉,我不明白你所说的评论是什么意思。您的测试用例应该告诉您必须测试什么。一个好的应用程序应该优雅地处理所有错误案例。