gpt4 book ai didi

未找到 AndroidHttpClient(运行 Robolectric 时)

转载 作者:IT老高 更新时间:2023-10-28 21:54:10 26 4
gpt4 key购买 nike

我建立了一个非常简单的项目来测试 Robolectric + Data Binding + Retrolambda 的集成。当我运行测试服时,我收到以下消息:

Error:(30, 30) Gradle: error: cannot access AndroidHttpClient
class file for android.net.http.AndroidHttpClient not found

这很奇怪,因为我没有在任何地方使用 AndroidHttpClient。


错误发生在这里,在“Activity ”行:

@Before
public void setup() {
activity = Robolectric.setupActivity(MainActivity.class); // Error on this line
textView = (TextView) shadowOf(activity).findViewById(R.id.textView);
button = (Button) activity.findViewById(R.id.button);
editText = (EditText) activity.findViewById(R.id.editText);
}

该程序从不使用 AndroidHttpClient。其实这就是整个程序:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

final ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);

binding.setUser(new User());
binding.button.setOnClickListener((v) -> {
binding.textView.setText(String.format("Hello, %s!", binding.editText.getText()));
binding.editText.setText("");
});
}

关于哪里出了问题的想法?

最佳答案

AndroidHttpClient 在 v23 的构建工具中已从 SDK 中移除。

由于 Robolectric 是针对早期版本运行的,它希望它存在,这就是您看到此错误的原因。

现在,您可以将其重新添加:

android {
useLibrary 'org.apache.http.legacy'
}

详细 here .

Robolectric 有一张 GitHub 票可以解决这个问题。您可以关注线程/票here .

更新:

正如一些人正确指出的那样,更好的方法是在您的测试资源中创建一个类 android.net.http.AndroidHttpClient。这将是一种首选方法,因为您只是在修改测试源,而不是生产代码,以适应测试。

关于未找到 AndroidHttpClient(运行 Robolectric 时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32759529/

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