2011-01-04 13 views
7

Tôi đang cố chạy thử nghiệm đơn vị cho thư viện tĩnh cố gắng tạo/ghi/đọc tệp trong thư mục tài liệu. Do đây là một thư viện tĩnh và không phải là một ứng dụng cho iOS, cố gắng để tham khảo các NSDocumentDirectory đang trở lại cho tôi thư mục cho các hình thứcKiểm tra đơn vị thư viện tĩnh liên quan đến NSDocumentDirectory và các cuộc gọi cụ thể khác của Ứng dụng iOS

"/ Users // Library/Application Support/iPhone Simulator/Documents"

này thư mục không tồn tại. Khi cố gắng truy cập vào một thư mục từ một ứng dụng thực tế, NSDocumentDirectory trả về một cái gì đó của biểu mẫu:

"/ Users // Library/Application Support/iPhone Simulator/4.2/FEDBEF5F-1326-4383-A087-CDA1B865E61A/Documents"

(Xin lưu ý các phiên bản mô phỏng cũng như ID ứng dụng như là một phần của con đường)

làm thế nào tôi có thể khắc phục nhược điểm này trong đơn vị khuôn khổ kiểm tra cho các thư viện tĩnh mà thực hiện các bài kiểm tra đòi hỏi iOS cuộc gọi cụ thể ứng dụng?

Xin cảm ơn trước.

Trả lời

3

Bạn cũng có thể giải quyết điều này bằng cách giả mạo quyền truy cập tệp của bạn để kiểm tra xác minh rằng mã của bạn đã cố gắng ghi dữ liệu dự kiến ​​vào đường dẫn được cung cấp bởi NSDocumentsDirectory mà không bao giờ thực sự nhấn hệ thống tệp.

+0

Cảm ơn đây là một gợi ý tốt. – Shiun

0

Khuôn khổ gh-đơn vị có thể chạy thử nghiệm đơn vị trong trình mô phỏng hoặc trên thiết bị của bạn. Điều này sẽ không chỉ giải quyết vấn đề của bạn, nhưng hãy để bạn gỡ lỗi ứng dụng của bạn (một cái gì đó tôi đã bị mất từ ​​các khung kiểm thử đơn vị khác).

Download gh-unit

How to install gh-unit

+0

Để công bằng cho công cụ kiểm tra của bên thứ ba khác, nó thực sự chỉ xcode được xây dựng trong SenTestingKit mà không hỗ trợ kiểm tra gỡ lỗi và chạy chúng trên hoặc là một thiết bị hoặc trong trình mô phỏng. – Jonah

+1

Trong [Xcode 4, bạn có thể thiết lập các điểm ngắt trong các phép thử đơn vị] (http://j.mp/ovjJdO) sử dụng [SenTestingKit/OCUnit] (http://www.sente.ch/software/ocunit/) (đơn vị khung kiểm tra đi kèm với Xcode). Ngoài ra, các kiểm tra logic chạy trong trình mô phỏng và các thử nghiệm ứng dụng chạy trên thiết bị, như được giải thích trong [Hướng dẫn phát triển iOS: Các ứng dụng thử nghiệm đơn vị] (http://j.mp/pNbcoJ) và [tài liệu tham khảo OCUnit khác] (http://www.sente.ch/software/ocunit/#More). Xem thêm: [Kiểm tra iOS/Thông số kỹ thuật TDD/BDD và Kiểm tra tích hợp & chấp nhận] (http://j.mp/lY309Y). – ma11hew28

3

tôi giải quyết việc này cho bản thân mình. Trong giai đoạn thiết lập thử nghiệm đơn vị của tôi, tôi đang tạo thư mục Tài liệu nếu nó không tồn tại và loại bỏ nó sau khi thử nghiệm kết thúc. Điều này có hiệu quả giúp tôi vượt qua sự tắc nghẽn và tiếp tục kiểm tra logic của tôi mà không cần phải lo lắng về tính đặc hiệu của ứng dụng iOS.

+0

'[[[NSFileManager alloc] init] removeItemAtURL: lỗi fileURL: NULL]' – ma11hew28

2

Sử dụng NSLibraryDirectory thay vì NSDocumentDirectory chỉ để kiểm tra bằng defining a TEST preprocessor macro.

Sau đó, loại bỏ các tập tin trong tearDown với:

[[[NSFileManager alloc] init] removeItemAtURL:fileURL error:NULL] 
Các vấn đề liên quan