मैं एक वर्ग के लिए एंड्रॉइड जुनीट टेस्ट लिख रहा हूं जो एक इरादे से पारित अतिरिक्त पर निर्भर करता है। मैं कक्षा को ठीक तरह से काम करने में सक्षम था, लेकिन मैं अभी भी जानना चाहूंगा कि इस तरह के वर्ग के लिए यूनिट टेस्ट कैसे लिखना है, क्योंकि परीक्षण अभी भी विफल रहता है।मेरी गतिविधि एक एंड्रॉइड जुनीट टेस्ट कैसे लिख सकती है जब मेरी गतिविधि किसी इरादे से पारित एक्स्ट्रा पर निर्भर करती है?
public class AddClassEvent extends Activity{
private String eventType;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle extras = getIntent().getExtras();
final String cNo = extras.getString("CourseNum");
// create a model instance
final StudentDBModel model = new StudentDBModel(this);
setContentView(R.layout.add_class_event);
.....
.....
}
}
परीक्षण वर्ग की तरह दिखता है ...
public class AddClassEventTest extends ActivityInstrumentationTestCase2<AddClassEvent>{
private StudentDBModel model = null;
private RenamingDelegatingContext context = null;
public AddClassEventTest() {
super("com.UI", AddClassEvent.class);
}
/**
* This method is called before each test.
*/
@Override
public void setUp() {
context = new RenamingDelegatingContext(getActivity(), "test_");
model = new StudentDBModel(context);
}
/*
* This function will test addNewClassEvent() from StudentDBModel
*/
public void testAddNewClassEvent(){
ContentValues courseValues = new ContentValues();
courseValues.put("CourseId", "60-415");
courseValues.put("CourseName", "Advanced Database Design");
courseValues.put("Section", "1");
courseValues.put("Location", "Erie");
courseValues.put("Credit", "3");
courseValues.put("ProfEmail", "[email protected]");
courseValues.put("Website", "cs.uwindsor.ca");
model.addNewCourses(courseValues);
int numEventsBefore = model.getNumClassEvents();
ContentValues values = new ContentValues();
values.put("EventName", "Assignment 1");
values.put("CourseId", "60-415");
values.put("EventType", "Assignment");
values.put("EventWeight", "8");
values.put("DueDate", "10/20/2010");
model.addNewClassEvent(values);
int numEventsAfter = model.getNumClassEvents();
assertEquals(numEventsBefore + 1, numEventsAfter);
}
}
समस्या है, अतिरिक्त है कि मैं वर्ग AddClassEvent को गुजर रहा हूँ कि एक और कक्षा में बनाया है और पारित हो जाता है मेरी DB के लिए एक पी है एक इरादे के माध्यम से AddClassEvent करने के लिए। जब भी मैं परीक्षण चलाने मैं लाइन पर पर एक नल पॉइंटर एक्सेप्शन मिलती है:
final String cNo = extras.getString("CourseNum");
मैं JUnit टेस्ट में अतिरिक्त जानकारी से कैसे बनाऊं? क्या इस परीक्षा को काम करने का कोई तरीका है? मैंने बड़े पैमाने पर खोज की है और मुझे कोई जवाब नहीं मिल रहा है। क्या जुनीट टेस्ट में अतिरिक्त रूप से अतिरिक्त बनाने का कोई तरीका है ताकि ऐसा लगता है कि यह दूसरे वर्ग द्वारा बनाया जा रहा है? यदि हां, तो क्या कोई मुझे दिखा सकता है कि कैसे?
ठीक तो मैं आपकी सलाह लेने की कोशिश की है और मैं करने के लिए मेरे सेटअप समारोह बदल दिया है:
@Override
public void setUp() {
context = new RenamingDelegatingContext(getActivity(), "test_");
model = new StudentDBModel(context);
Intent addEvent = new Intent();
addEvent.setClassName("com.UI", "com.UI.AddClassEvent");
addEvent.putExtra("CourseNum", "60-415");
setActivityIntent(addEvent);
getActivity();
}
लेकिन मैं अभी भी एक नल पॉइंटर एक्सेप्शन हो रही है। क्या मेरा वाक्यविन्यास गलत है? कोई सुझाव?
जब आप putExtra() का उपयोग करते हैं तो आपको नाम के साथ एक पैकेज उपसर्ग शामिल करने की आवश्यकता होती है। पूर्व: addEvent.putExtra ("com.ui.CourseNum", "60-415"); – McStretch