मेरा पहला एंड्रॉइड-बाय-टीडीडी ऐप लिखने का प्रयास (मैंने टीडीडी के बिना कुछ छोटे एंड्रॉइड ऐप्स लिखे हैं, इसलिए पर्यावरण से परिचित हैं), लेकिन मुझे लगता है कि मेरा पहला सिर कैसे लिखना है परीक्षा।यूनिट परीक्षण गतिविधि .startService() कॉल?
परिदृश्य:
मैं एक गतिविधि, TasksActivity, और एक सेवा, TasksService है। मुझे यह जांचने की ज़रूरत है कि टास्क एक्टिविटी टास्क सेवा को ऑनस्टार्ट() विधि में शुरू करती है।
public class ServiceControlTest extends ActivityUnitTestCase<TasksActivity>{
public ServiceControlTest() {
super(TasksActivity.class);
}
public void testStartServiceOnInit() {
final AtomicBoolean serviceStarted = new AtomicBoolean(false);
setActivityContext(new MockContext() {
@Override
public ComponentName startService(Intent service) {
Log.v("mockcontext", "Start service: " + service.toUri(0));
if (service.getComponent().getClassName().equals (TasksService.class.getName()))
serviceStarted.set(true);
return service.getComponent();
}
});
startActivity(new Intent(), null, null);
assertTrue ("Service should have been started", serviceStarted.get());
}
}
TasksActivity में मेरी OnCreate() विधि में मेरे पास है:
startService(new Intent(this, TasksService.class));
मैं भी
getBaseContext().startService(new Intent(this, TasksService.class));
की कोशिश की है लेकिन
परीक्षण मैं लिखा है यह है किसी भी मामले में मेरी MockContext की प्रारंभ सेवा विधि को कॉल नहीं किया जाता है। क्या कोई तरीका है कि मैं इस विधि के अवरोध को स्थापित कर सकता हूं? मुझे वास्तव में बुनियादी परीक्षण करने के लिए बुनियादी एंड्रॉइड एपीआई को लपेटना शुरू नहीं करना पड़ेगा ...
आपने जांच लिया है कि अपने 'Activity' के' OnCreate() 'विधि उपकरण के माध्यम से बुलाया जा रहा है? मैं वहां जो कुछ भी कर रहा हूं उसके साथ मुझे कुछ भी गलत नहीं दिख रहा है। –
अब, यह दिलचस्प है। यह नहीं है न ही इसे बुलाया जाता है अगर मैं स्पष्ट रूप से प्राप्त करता हूं इंस्ट्रुमेंटेशन()। कॉलएक्टिविटीऑनक्रेट (...)। लेकिन यह * कहा जाता है * अगर मैं अपने नकली संदर्भ पर टिप्पणी करता हूं ... कॉल को पारित करने के लिए संदर्भ पर कुछ निर्भरता होनी चाहिए। – Jules
यूप। यह पाया (http://www.paulbutcher.com/2011/03/mock-objects-on-android-with-borachio-part-2/), एक नज़र डालें। अनिवार्य रूप से, 'मॉककॉन्टेक्स्ट' लगभग पूरी तरह से बेकार है :)। –