Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.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 我可以模拟asynctask的返回值吗';s";“doInBackground”;junit测试期间的方法?_Android_Junit_Android Espresso - Fatal编程技术网

Android 我可以模拟asynctask的返回值吗';s";“doInBackground”;junit测试期间的方法?

Android 我可以模拟asynctask的返回值吗';s";“doInBackground”;junit测试期间的方法?,android,junit,android-espresso,Android,Junit,Android Espresso,我知道这个问题很奇怪。但我仍然想知道有没有一种方法可以在测试期间使用Junit和Mokito模拟asynctask的“doInBackgound”方法的返回值 我想要的是:测试用例将运行以执行异步任务。在asyncTask期间,我希望更改将传递到onPostExecute()的结果。那么有没有办法指定doInBackground()的结果的值呢 我想这样做的原因是: 当Espresso单击UI上的按钮时,它将执行需要扫描仪的异步任务。但是在测试过程中,我并不真正想要扫描,所以我使用mokito模

我知道这个问题很奇怪。但我仍然想知道有没有一种方法可以在测试期间使用Junit和Mokito模拟asynctask的“doInBackgound”方法的返回值

我想要的是:测试用例将运行以执行异步任务。在asyncTask期间,我希望更改将传递到onPostExecute()的结果。那么有没有办法指定doInBackground()的结果的值呢

我想这样做的原因是: 当Espresso单击UI上的按钮时,它将执行需要扫描仪的异步任务。但是在测试过程中,我并不真正想要扫描,所以我使用mokito模拟一个Scanner类,并将其传递给asyncTask。因为Scanner类是第三方类,我无法获取/设置它的值。但是我想指定扫描结果,所以我尝试在asynctask中指定它

下面是代码逻辑: 这是应用程序代码:

@Override
    protected String doInBackground(ScanDataCollection... params) {
        String result = ScanDataCollection.getScanData().getData();
        return result;           
    }

@Override
    protected void onPostExecute(String result) {
        /* Do something with "result"*/
    }  
这是测试代码:

        ScanDataCollection scanDataCollection = mock(ScanDataCollection.class);
        asyncTask.execute(scanDataCollection);
现在我想要的是,当asyncTask运行其doInBackground时,返回一个值为“123”的字符串

此任务将由用户单击按钮并使用扫描仪扫描二维码触发。但在测试中,我真的不想让用户“扫描”。我想模拟用户扫描行为。所以我使用mokito来模拟“ScandaCollection”对象。既然“ScandaCollection”是第三方库,并且它没有设置值的方法,那么如何设置扫描结果的值并使测试用例继续进行?所以我试图找出我可以在测试中使用doingBackground()方法并为它设置一个返回值


我可以做一些类似于调用getScanda().getData()时返回“123”的操作吗?怎么做?

这看起来很简单,你能提供你已有的代码吗?主要是
扫描器
异步任务
的工作方式?嗨,巴特克,我刚刚添加了代码。代码非常简单。我在测试文件中模拟ScandaCollection,并将其作为参数发送到此asyncTask。但这是第三方库,不允许我将值设置为ScandaCollection。那么,我如何给它一个值,并使doInBackground中的“result”成为我想要的值呢?然后我可以让测试用例继续进行。