- Siêu lớp và danh mục iOS/Objective-C
- object-c - -1001 lỗi khi NSURLSession vượt qua httpproxy và /etc/hosts
- java - Nhận địa chỉ url bằng lớp mạng
- ios - Âm thanh không phát trong thông báo đẩy
Một tình huống khá bình thường: một ứng dụng Android có Hoạt động tùy chọn và việc chọn một tùy chọn từ mã kích hoạt ListPreference sẽ thay đổi văn bản tóm tắt của ListPreference đó. Tức là: chọn "Xanh" từ Color ListPreference sẽ vượt qua trênPreferenceChange
Cuộc gọi lại thay đổi văn bản tóm tắt của ListPreference thành "xanh".
Tôi muốn có thể sử dụng các bài kiểm tra Android JUnit để xác nhận rằng những thay đổi tóm tắt này đều được thực thi chính xác. Tuy nhiên, dường như có rất ít thông tin về cách thực hiện việc này.
Tôi đã thử sử dụng trên ListPreference setValue()
Biến thể của, trong chuỗi thử nghiệm và đã vượt qua runOnUiThread()
Không thành công - điều này không kích hoạt cặp onPreferenceChange()
gọi. đang gọi điện setValue()
Sau đó tôi cũng đã thử getInstrumentation().waitForIdleSync()
, nhưng điều này cũng thất bại.
Vì vậy, câu hỏi của tôi là: việc này được thực hiện như thế nào?
Cảm ơn!
câu trả lời hay nhất
Một vài giờ làm việc đã tạo ra giải pháp hiệu quả này, nhưng tôi tò mò liệu có ai có giải pháp tốt hơn không. Mã này được lấy cảm hứng từ giải pháp nàyCâu hỏi tương tự, nhưng tình huống này khác nhau theo hai cách:
runOnUiThread()
Gọi giao diện người dùng ListPreference khi nhấp chuột.Phương thức này sẽ chấp nhận khóa của mục ListPreference cụ thể và vị trí trong danh sách mục cần nhấp vào. Sau đó, nó sẽ thực hiện nhấp chuột vào mục danh sách đó và mã khác sẽ thực hiện kiểm tra mà tôi đang tìm kiếm.
Xin lưu ý rằng điều này đòi hỏi cài đặt()
Được gọi trong phương thức getActivity()
đã đặt trước đó setActivityInitialTouchMode(true);
.
khoảng trống riêng tư clickListPreference(String _listPreferenceKey, int _listItemPos){
chuỗi cuối cùng listPreferenceKey = _listPreferenceKey;
cuối cùng int listItemPos = _listItemPos;
mActivity.runOnUiThread(
mới có thể chạy được() {
công khai void run() {
// lấy một điều khiển cho ListPreference cụ thể
ListPreference listPreference= (ListPreference) mActivity.findPreference(listPreferenceKey);
// xuất hiện hộp thoại
mActivity.getPreferenceScreen().onItemClick( null, null, getPreferencePosition(), 0 );
// nhấp vào mục được yêu cầu
AlertDialog listDialog = (AlertDialog) listPreference.getDialog();
ListView listView = listDialog.getListView();
listView.performItemClick(listView, listItemPos, 0);
}
/***
* Khó tìm một ListPreference khi có các Danh mục ưu tiên,
* vì chính tiêu đề danh mục được tính là một vị trí trong màn hình tùy chọn
* danh sách.
*
* Phương pháp này lặp lại các mục ưu tiên bên trong các danh mục ưu tiên
* để tìm ListPreference mong muốn.
*
* @return Vị trí của ListPreference so với toàn bộ danh sách màn hình tùy chọn
*/
int riêng tư getPreferencePosition(){
bộ đếm int = 0;
Màn hình PreferenceScreen = mActivity.getPreferenceScreen();
// lặp qua các danh mục
for (int i = 0; i < screen.getPreferenceCount(); i++){
PreferenceCategory cat = (PreferenceCategory) screen.getPreference(i);
bộ đếm++;
// lặp qua các mục danh mục
for (int j = 0; j < cat.getPreferenceCount(); j++){
if (cat.getPreference(j).getKey().contentEquals(listPreferenceKey)){
bộ đếm trở lại;
}
bộ đếm++;
}
}
trả về 0; // không khớp
}
}
);
getInstrumentation().waitForIdleSync();
}
Về thử nghiệm tùy chọn Android JUnit, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/6932608/
Theo tinh thần của câu hỏi này từ JUnit 3 đến JUnit 4, có danh sách biểu thức chính quy nào để di chuyển hiệu quả từ API Junit 4 sang API Junit 5, bất kể kích thước mã không?
Như hiện tại, câu hỏi này không hoàn toàn phù hợp với định dạng Hỏi & Đáp của chúng tôi. Chúng tôi hy vọng câu trả lời sẽ được hỗ trợ bởi các sự kiện, trích dẫn hoặc kiến thức chuyên môn, nhưng câu hỏi có thể gây ra tranh luận, tranh luận, bỏ phiếu hoặc thảo luận mở rộng. Nếu bạn cảm thấy vấn đề này có thể được cải thiện và có thể mở lại, hãy truy cập
Tôi cần bài kiểm tra sau @runwith(cache, Memory) class CollectionA là -- đây là một bộ (còn gọi là thư mục) class Cache {
Khi cố gắng sử dụng trận derby với cơ sở dữ liệu trong bộ nhớ của JUNITTEST, tôi gặp ngoại lệ sau. java.sql.SQLNonTransientConnectionException: Bộ nhớ của cơ sở dữ liệu:t
Tôi cần bài kiểm tra sau @runwith(cache, Memory) class CollectionA là -- đây là một bộ (còn gọi là thư mục) class Cache {
Câu hỏi này đã có câu trả lời ở đây: Đã đóng 11 năm trước. Có thể trùng lặp: Làm cách nào để chạy các bản thử nghiệm Junit từ dòng lệnh?
Tôi có thể sử dụng Junitperf với junit4 không? Tôi có một lớp kiểm tra Junit4 đơn giản với nhiều bài kiểm tra và tôi muốn TimedTest một bài kiểm tra duy nhất của lớp này. Tôi nên làm gì? Nói rõ hơn thì Junit4 của tôi
Tôi muốn thêm các thử nghiệm JUnit 4 vào một dự án cũ sử dụng bộ thử nghiệm JUnit 3 ("AllTests") để tổ chức các thử nghiệm. Các bài kiểm tra đã được thực hiện với JUnit 4, vì vậy tôi biết rằng các bài kiểm tra JUnit 4 về nguyên tắc là hợp lệ.
Tôi đang di chuyển cơ sở mã của mình từ junit4 sang junit5. Tôi đang sử dụng mockito trong các trường hợp thử nghiệm của mình. Dưới đây là các phiên bản khác nhau mà tôi sử dụng cho phần phụ thuộc. 5.2.0 1.2.0 1.10.19 hoặc
Tôi vừa tạo XML sau bằng cách sử dụng qunit-reporter-junit: Nhưng khi chạy nó, tôi tìm thấy xsd tại: http
Tôi đã viết một trình chạy JUnit tùy chỉnh và tôi muốn nó trở thành một phần của plugin Eclipse sẽ sử dụng trình chạy này để khởi chạy các thử nghiệm mà không cần áp dụng chú thích @RunWith cho lớp. Tôi đã quản lý để sử dụng org.eclipse
Tôi nhận thấy rằng phiên bản Sonar 5.1 hoặc 5.1.1 của tôi (với phiên bản sonar 2.x mới nhất) đã ngừng hiển thị một phần thông tin kiểm tra đơn vị (tiện ích kiểm tra đơn vị) trên trang tổng quan của dự án. Các thuộc tính tôi có là (trong sonarRunner > sona của Gradle
Tôi có một bài kiểm tra JUnit. Nhưng khi tôi sử dụng "Run as -> JUnit" thì nó thành công và khi tôi sử dụng "Cover as -> JUnit" thì nó không thành công. tại sao vậy? Thực sự có điều gì đó không ổn với mã. Trong mã tôi sử dụng một số di sản
Câu hỏi này đã có câu trả lời ở đây: Làm cách nào để kiểm tra mã phụ thuộc vào biến môi trường bằng JUnit? (20 câu trả lời) Đã đóng 8 năm trước. TÔI
Khi máy chủ dàn dựng của chúng tôi ngừng hoạt động để bảo trì hàng tuần, chúng tôi đã gặp nhiều thử nghiệm tích hợp không thành công. Khi máy chủ dàn dựng ngừng hoạt động, chúng tôi sẽ gửi phản hồi cụ thể mà tôi có thể phát hiện trong quá trình kiểm tra tích hợp. Khi tôi nhận được phản hồi này thay vì thử nghiệm thất bại, tôi tự hỏi liệu nó có thể bị bỏ qua/bỏ qua không
Tôi cần kiểm tra một chương trình trước tiên xử lý trước một số dữ liệu, sau đó sử dụng dữ liệu được xử lý trước này để tính toán một số kết quả khác nhau - nên viết một bài kiểm tra riêng cho mỗi phép tính. Chính sách chính thức của JUnit có vẻ là tôi nên chạy tiền xử lý trước mỗi lần kiểm tra điện toán. làm thế nào tôi
JUnit có thể thêm văn bản mô tả vào từng phương pháp thử nghiệm để văn bản mô tả xuất hiện sau trong báo cáo xml chắc chắn/không lưu được không!? Bối cảnh: Tôi làm việc trong một môi trường được quản lý và phải viết tài liệu chuyên sâu, thông số kỹ thuật kiểm tra và báo cáo kiểm tra. JU
Tôi muốn làm điều gì đó "của riêng mình" khi xác nhận trong JUnit không thành công. Tôi muốn điều này: lớp công khai MyAssert mở rộng org.junit.Assert { // @Overrid
đóng cửa. Câu hỏi này lạc đề. Hiện tại nó không chấp nhận câu trả lời. Bạn muốn cải thiện vấn đề này? Đã cập nhật câu hỏi để nó phù hợp với chủ đề về Stack Overflow. Đóng cửa 8 năm trước Cải thiện q này
Tôi muốn chuyển các tham số từ cấu hình chạy sang bài kiểm tra JUnit của mình. Làm cách nào để truy cập phương thức chính của JUnits để truy cập các tham số này? Có ai biết làm thế nào để làm điều này? Cảm ơn Câu trả lời hay nhất Bạn có thể chạy thử nghiệm đơn vị bằng thuộc tính hệ thống -D và sử dụng Syst
Tôi là một lập trình viên xuất sắc, rất giỏi!