xcode XCestest में स्थानीयकरण लोड नहीं कर रहे हैं?



macos localization (1)

मेरे पास XCode में एक स्कीमा है जिसमें केवल टेस्ट कॉन्फ़िगर किया गया है। और यह स्कीमा एक ऐसे लक्ष्य को इंगित करती है जिसमें मेरे सारे परीक्षण होते हैं (यह ओएस एक्स के लिए कोको यूनिट टेस्टिंग बंडल लक्ष्य है)।

इसलिए, मैं इन सभी परीक्षणों को चलाने के लिए कमांड + यू करता हूं और यह ठीक काम करता है। हालांकि, कुछ परीक्षणों को स्थानीयकरण संसाधनों तक पहुंच की आवश्यकता होती है। मैंने इन संसाधनों को अपने लक्ष्य में जोड़ा और यहां तक ​​कि परिणामस्वरूप निर्मित बाइनरी में जांच करें कि स्थानीयकरण संसाधन हैं।

हालांकि, कोड संसाधनों को नहीं देखता है, इसलिए जब कोई भी परीक्षण NSLocalizedString करता है, तो यह स्थानीय कुंजी के बजाय, स्थानांतरित होता है।

परीक्षाओं को इन संसाधनों को देखने देने के लिए मुझे क्या करना चाहिए?


इस प्रश्न पर पद की तारीख थोड़े पुरानी है, लेकिन मैं इस एक ही समस्या में भाग गया मुझे इस ब्लॉग पर इस अद्भुत लेख को मिला जो इस समस्या का वर्णन करता है और एक महान समाधान है।

http://drekka.ghost.io/the-state-of-xcode-unit-testing/#xctestunittestsbug1incorrectbundleapplebug15306667

उनके पास दो समाधान हैं, पहले एक (मेरे लिए काम नहीं किया):

बदलने के

[NSBundle mainBundle]

साथ में

[NSBundle bundleForClass:[self class]]

दूसरा समाधान (बहुत अच्छा काम करता है जो ओकॉमॉक का उपयोग करता है):

static id _mockNSBundle;

+(void)setUp {
    _mockNSBundle = [OCMockObject niceMockForClass:[NSBundle class]];
    NSBundle *correctMainBundle = [NSBundle bundleForClass:[self class]];
    [[[[_mockNSBundle stub] classMethod] andReturn:correctMainBundle] mainBundle];
}

+(void)tearDown {
    [_mockNSBundle stopMocking];
    _mockNSBundle = nil;
}

उम्मीद है कि भविष्य में इस पोस्ट की जांच करने वाले लोगों की मदद करता है।





xctest