2016-09-19 15 views
6

से getString मैं एंड्रॉइड ऐप के लिए यूनिट टेस्ट करने की कोशिश कर रहा हूं और मुझे res.string संसाधनों से स्ट्रिंग प्राप्त करने की आवश्यकता है। जिस वर्ग को मैं परीक्षण करना चाहता हूं वह एक पीओजेओ कक्षा है। मैं दो भाषाओं में ऐप कर रहा हूं, इसके कारण, मुझे संसाधन से स्ट्रिंग प्राप्त करने की आवश्यकता है। समस्या यह है कि मुझे संदर्भ या गतिविधि नहीं मिल सकती है, संभव है? मुझे पता है कि इंस्ट्रुमेंटेशन टेस्ट के साथ मैं इसे कर सकता हूं, लेकिन मुझे इंस्ट्रूमेंटेशन टेस्ट (ब्लैक बॉक्स टेस्ट) करने से पहले कुछ फ़ंक्शन (व्हाइट बॉक्स टेस्ट) का परीक्षण करने की आवश्यकता है। इस समारोह मैं परीक्षण करना है:यूनिट टेस्ट एंड्रॉइड, संसाधन

public void setDiaByText(String textView) { 
    getll_diaSeleccionado().clear(); 
    if (textView.contains(context.getResources().getString(R.string.sInicialLunes))) { 
     getll_diaSeleccionado().add(0); 
     getIsSelectedArray()[0] = true; 
     getI_idiaSeleccionado()[0] =1; 

    } else 
    { 
     getIsSelectedArray()[0] = false; 
     getI_idiaSeleccionado()[0] =0; 
    } 
} 

और यह परीक्षण है:

@Test 
public void setDiaByTextView() { 
    String texto = "L,M,X,J,V,S,D"; 

    alertaPOJO.setDiaByText(texto); 

    assertEquals(alertaPOJO.getIsSelectedArray()[0], true); 
    assertEquals(alertaPOJO.getI_idiaSeleccionado()[0], 1); 
} 

यह दुर्घटना जब कोशिश context.getResources().getString(R.string.sInicialLunes))

करने के लिए अगर मैं 'Mon' डाल के बजाय context.getResources().getString(R.string.sInicialLunes)) या 'एल' यह पूरी तरह से काम करता है, संसाधन फ़ोल्डर तक पहुंचने के लिए संदर्भ या गतिविधि प्राप्त करना संभव है?

मैं Mockito के साथ परीक्षण कर रहा हूँ और सेटअप समारोह है:

@Before 
public void setUp() throws Exception { 

    MockitoAnnotations.initMocks(this); 
    mContext = Mockito.mock(Alerta.class); 
    Mockito.when(mContext.getApplicationContext()).thenReturn(mContext); 

    alertaPOJO = new AlertaPOJO(); 
} 

धन्यवाद

उत्तर

7

आप केवल String संसाधन प्राप्त करने के लिए Context का उपयोग कर रहे हैं, तो मैं इस तरह केवल getResources().getString() हिस्सा मजाक से जाना होगा (JUnit4 अंकन देखें):

@RunWith(MockitoJUnitRunner.class) 
public class AlertaPOJOTest { 

    @Mock 
    Context mMockContext; 

    @Test 
    public void setDiaByTextView() { 
    String texto = "L,M,X,J,V,S,D"; 
    when(mMockContext.getString(R.string.R.string.sInicialLunes)) 
     .thenReturn(INITIAL_LUNES); 


    alertaPOJO.setDiaByText(texto); 

    assertEquals(alertaPOJO.getIsSelectedArray()[0], true); 
    assertEquals(alertaPOJO.getI_idiaSeleccionado()[0], 1); 
    } 
} 

वहाँ, JVM परीक्षण के साथ रहने के कई कारण हैं सबसे महत्वपूर्ण एक, वे जल्दी चल रहे हैं।

3

जब तुम JVM इकाई परीक्षण का उपयोग कर रहे आप एक असली एंड्रॉयड प्रसंग नहीं है। आपके मामले के लिए, शायद आप एंड्रॉइड इंस्ट्रुमेंटेशन टेस्ट को आजमा सकते हैं, आमतौर पर इसे आपके प्रोजेक्ट की "एंड्रॉइडटेस्ट" निर्देशिका में कार्यान्वित किया जाता है।

+0

धन्यवाद @ शेरलॉक, मुझे लगता है कि यह सही जवाब था जैसा मैंने पढ़ा है लेकिन मुझे एंड्रॉइड में शुरुआत करने के कारण एक पुष्टि की आवश्यकता है। – Tachenko

संबंधित मुद्दे