2012-02-21 33 views
11

tôi có phần trong mã của tôi (ví dụ như trong AppDelegate.m) không nên được biên soạn cho các đơn vị xét nghiệm, nhưXcode: macro tiền xử lý cho mã có điều kiện DEBUG/TEST

#ifndef CONFIGURATION_TESTS 
// Code that should not be compiled in the Unit Tests 
#endif 

mục tiêu được thiết lập bởi Xcode khi bạn chọn 'thêm Bài kiểm tra Đơn vị' khi tạo dự án mới. Trong tệp Dự án, tôi đã thêm Cờ CONFIGURATION_TESTS vào các Macro tiền xử lý cho MyAppTests Built-Target nhưng không cho MyApp Target.

Đây là cách được đề xuất trong nhiều bài đăng mà tôi đã tìm thấy.

Nhưng điều này không hiệu quả, vì (tôi đoán) mục tiêu MyAppTests có mục tiêu MyApp là phụ thuộc và vì AppDelegate.m được thêm vào mục tiêu MyApp, nó được biên dịch với cài đặt xây dựng MyApp và do đó, CONFIGURATION_TESTS không được xác định.

Trong đơn vị kiểm tra tập tin vĩ mô được xác định và hoạt động như dự kiến ​​(vì các tập tin thử nghiệm chỉ được xây dựng bởi các MyAppTests nhắm mục tiêu?)

Có ai biết làm thế nào thực hiện điều này, tôi nghĩ đây sẽ là một chung vấn đề ...

+1

Tôi có cùng một vấn đề và không thể tìm ra nó – shawnwall

+0

"này không hoạt động: 1) CONFIGURATION_TEST 3) không bao giờ đúng? 3) hoạt động trong bài kiểm tra đơn vị nhưng không phải trong ứng dụng? 4) hoạt động trong ứng dụng nhưng không phải kiểm tra đơn vị? (hỏi ý muốn biết…) – geowar

Trả lời

11

Cuối cùng tôi đã tìm thấy câu trả lời bản thân mình: Điều quan trọng là để tạo ra một cấu hình build mới (cho phép gọi cấu hình này Thử nghiệm)

Sau đó, bạn cấu hình các giá trị của macro tiền xử lý tương ứng, do đó, để cấu hình Debug và Release bạn đặt CONFIGURATION_TESTS = 0 và để cấu hình Thử nghiệm, bạn đặt CONFIGURATION_TESTS = 1

Cuối cùng bạn chỉnh sửa lược đồ Unit-Test để sử dụng Testing as build cấu hình. Vậy đó: P

Tôi đã viết một bước-by-step giải thích chi tiết hơn tại tôi blog

+0

Câu hỏi câm: Tại sao bạn cần CONFIGURATION_TESTS = 0 cho Tôi đã bỏ phần này ra và mọi thứ dường như hoạt động tốt. –

3

Bạn cần phải thiết lập "CONFIGURATION_TESTS = 1", không chỉ là "CONFIGURATION_TESTS"

Các vấn đề liên quan