Tôi đã thiết lập một dự án rất đơn giản để kiểm tra sự tích hợp của Robolectric + Data Binding + Retrolambda. Khi tôi chạy thử nghiệm, tôi nhận được thông báo sau:Không tìm thấy AndroidHttpClient (khi chạy Robolectric)
Error:(30, 30) Gradle: error: cannot access AndroidHttpClient
class file for android.net.http.AndroidHttpClient not found
Điều này khá lạ vì tôi không sử dụng AndroidHttpClient ở bất kỳ đâu.
Lỗi này xảy ra ở đây, trên các "hoạt động" dòng: Chương trình
@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);
}
Các không bao giờ sử dụng AndroidHttpClient. Trong thực tế, đây là toàn bộ chương trình:
@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("");
});
}
Ý tưởng như những gì vậy?
'AndroidHttpClient' đã bị xóa khỏi SDK ở cấp API 23, vì vậy nếu' compileSdkVersion' của bạn là 23 hoặc cao hơn, điều đó sẽ giải thích lý do lớp không được tìm thấy. Về lý do tại sao Robolectric đang cố gắng truy cập vào lớp đó, mà tôi không thể nói. – CommonsWare
Điều đó đã sửa nó! Tôi đã chạy thử nghiệm với: "@Config (hằng số = BuildConfig.class, sdk = 21)". Cảm ơn! – Technocrat
Viết câu trả lời để mọi người sẽ hưởng lợi –