CẬP NHẬT: Tôi đã kết thúc từ bỏ và thêm GHUnit vào dự án của tôi để thay thế. Tôi đã đứng dậy và chạy với GHUnit chỉ trong vài phút.OCUnit thử nghiệm một khuôn khổ nhúng
UPDATE: Bạn có thể tải dự án Xcode đây: http://github.com/d11wtq/Cioccolata
Tôi đã thêm một thử nghiệm chỉ tiêu Đơn vị tới dự án Xcode của tôi, nhưng nó không tìm thấy khuôn khổ của tôi khi nó được xây dựng, nói:
Test.octest could not be loaded because a link error occurred. It is likely that dyld cannot locate a framework framework or library that the the test bundle was linked against, possibly because the framework or library had an incorrect install path at link time.
Khung của tôi (mục tiêu dự án chính) được thiết kế để nhúng và do đó có đường dẫn cài đặt @executable_path/../Frameworks
.
Tôi đã đánh dấu khung làm phụ thuộc trực tiếp của mục tiêu thử nghiệm và tôi đã thêm nó vào giai đoạn xây dựng "Liên kết nhị phân với Thư viện".
Ngoài ra tôi đã thêm bước đầu tiên (sau khi nó được xây dựng phụ thuộc) của "Sao chép tệp", chỉ cần sao chép khuôn khổ vào thư mục Khung của gói thử nghiệm đơn vị.
Bất kỳ ai có kinh nghiệm về điều này? Tôi không chắc những gì tôi đã bỏ lỡ.
EDIT | Tôi khá chắc chắn tôi không phải, vì một khung công tác không thực thi được, nhưng tôi chưa đặt "Test Host" và "Bundle Loader". Điều này nên (hiểu biết của tôi) tất cả đều ok vì gói thử nghiệm được liên kết với khung và sẽ tải nó giống như bất kỳ gói nào khác.
EDIT | Tôi nghĩ tôi gần như ở đó. Tôi đọc bài viết sau đây quy định việc sử dụng @rpath thay vì @executable_path.
http://www.dribin.org/dave/blog/archives/2009/11/15/rpath/
Trong trường hợp này nó làm cho cảm giác hoàn hảo kể từ khi gói thử nghiệm OCUnit là KHÔNG một thực thi, đó là một bó cũ đồng bằng, vì vậy @executable_path là không tương thích. Vì vậy, bây giờ khuôn khổ của tôi có thư mục cài đặt của nó thiết lập để @rpath
và mục tiêu thử nghiệm có đường dẫn tìm kiếm thời gian chạy của nó (rpath) được định nghĩa là thư mục xây dựng. Điều này tiết kiệm cho tôi phải sao chép khuôn khổ vào gói thử nghiệm và có nghĩa là toàn bộ khung kết quả là linh hoạt hơn nhiều trong tự nhiên vì nó có thể sống ở bất cứ đâu.
Bây giờ, tôi cũng nhận thấy rằng nên đã đặt Trình tải gói trên mục tiêu Kiểm tra, do đó, điều này hiện được đặt thành đường dẫn của nhị phân khung.
Tôi có thể tạo mục tiêu thử nghiệm và tôi có thể #import các lớp học khỏi khung công tác, không có lỗi. Nhưng ngay sau khi tôi cố gắng thuyết minh một lớp từ khuôn khổ tôi nhận được lỗi sau:
/Developer/Tools/RunPlatformUnitTests.include:412: note: Started tests for architectures 'i386' /Developer/Tools/RunPlatformUnitTests.include:419: note: Running tests for architecture 'i386' (GC OFF) objc[50676]: GC: forcing GC OFF because OBJC_DISABLE_GC is set Test Suite '/Users/chris/Projects/Mac/Cioccolata/build/Debug/Test.octest(Tests)' started at 2010-05-21 12:53:00 +1000 Test Suite 'CTRequestTest' started at 2010-05-21 12:53:00 +1000 Test Case '-[CTRequestTest testNothing]' started. /Developer/Tools/RunPlatformUnitTests.include: line 415: 50676 Bus error "${THIN_TEST_RIG}" "${OTHER_TEST_FLAGS}" "${TEST_BUNDLE_PATH}" /Developer/Tools/RunPlatformUnitTests.include:451: error: Test rig '/Developer/Tools/otest' exited abnormally with code 138 (it may have crashed). Command /bin/sh failed with exit code 1
phương pháp thử nghiệm của tôi không gì hơn là phân bổ và sau đó phát hành một lớp HelloWorld Tôi tạo ra để giúp gỡ cài đặt này:
- (void)testNothing {
CTHelloWorld *h = [[CTHelloWorld alloc] init];
[h release];
}
Nếu tôi thay thế các dòng mã này bằng STAssertTrue(YES, @"Testing nothing");
lỗi sẽ biến mất, mặc dù lớp vẫn đang được nhập.
Bất kỳ cách nào bạn có thể nhập dự án của mình và đăng trực tuyến? Tôi sẽ sẵn sàng để có một cái nhìn nhanh chóng. Tôi đã vật lộn với một vấn đề tương tự một thời gian nhưng không thể nhớ chính xác những gì tôi đã làm. Nhìn vào một dự án bị hỏng có thể giúp rattle não của tôi. –
Tôi đang đưa nó lên github bây giờ ... sẽ đăng trong một đánh dấu. – d11wtq
Không thực sự nhiều trong cách của mã bí mật ở đây. Nó hầu như không bắt đầu;) http://github.com/d11wtq/Cioccolata – d11wtq