gpt4 book ai didi

android - 有没有办法在 AsyncTask 的抽象类保护方法中对代码进行单元测试?

转载 作者:行者123 更新时间:2023-11-29 02:42:19 25 4
gpt4 key购买 nike

长话短说,我需要测试在 AsyncTask 的“doInBackground”方法中执行的代码。

这在 Android Studio 中与 PowerMockito/Mockito/Robolectric/JUnit4。

我知道测试编写的代码远非理想,
但我对此一无所知,我无法更改原始代码。

是这样的:

   public void methodToTest(){
new AsyncTask<Integer, Void, Boolean>() {
@Override
protected Boolean doInBackground(Integer... integers) {

//How to test code written over here ?

return false;
}
}
}

有办法解决吗?非常感谢任何建议

最佳答案

这里有一个丑陋但有效的弯路:反射。

重点是:上面的代码声明了一个匿名内部类。但事实是:即使是匿名内部类也有一个唯一的定义名称。

并且使用反射,完全可以实例化这种匿名内部类的对象。

可以看看here了解它是如何工作的。

归结为:当您能够实例化包含 methodToTest() 的类的对象时;那么您还可以实例化该内部类的对象。然后您应该能够在这些对象中的任何一个上调用方法。

但即使这有效并让您进行合理的单元测试:您可能希望向编写生产代码的人员展示这些测试。让他们清楚他们不愿意编写可测试生产代码会造成什么样的伤害!

关于android - 有没有办法在 AsyncTask 的抽象类保护方法中对代码进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43255066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com