कहा जाता है तो जांच कर रहा है मेरे पास एक बहुत ही सरल फ़ाइल वॉचर क्लास है जो फ़ाइल बदलती है और यदि ऐसा है, तो onChange
विधि (शून्य) कहा जाता है। क्या यह जांचने का कोई आसान तरीका है कि onChange
विधि को यूनिट परीक्षण में बुलाया जा रहा है?जुनीट: यदि एक शून्य विधि को
कोड:
public class PropertyFileWatcher extends TimerTask {
private long timeStamp;
private File file;
public PropertyFileWatcher(File file) {
this.file = file;
this.timeStamp = file.lastModified();
}
public final void run() {
long timeStamp = file.lastModified();
if (this.timeStamp != timeStamp) {
this.timeStamp = timeStamp;
onChange(file);
}
}
protected void onChange(File file) {
System.out.println("Property file has changed");
}
}
टेस्ट:
@Test
public void testPropertyFileWatcher() throws Exception {
File file = new File("testfile");
file.createNewFile();
PropertyFileWatcher propertyFileWatcher = new PropertyFileWatcher(file);
Timer timer = new Timer();
timer.schedule(propertyFileWatcher, 2000);
FileWriter fw = new FileWriter(file);
fw.write("blah");
fw.close();
Thread.sleep(8000);
// check if propertyFileWatcher.onChange was called
file.delete();
}
आप किसी भी मॉकिंग फ्रेमवर्क का उपयोग कर सकते हैं न कि सिर्फ मॉकिटो। EasyMock या jMock पर एक नज़र डालें और अपनी पसंद के अनुसार चुनें। लेखन इकाई परीक्षण के अंगूठे का नियम यह है कि आपको केवल उन वस्तुओं को नकल करना चाहिए जिन्हें आप नियंत्रित कर सकते हैं। दूसरे शब्दों में, नकली वस्तुओं को परीक्षण के तहत अपनी विधि के लिए कन्स्ट्रक्टर तर्क/सेटर्स या पैरामीटर का उपयोग करके परीक्षण के तहत कक्षा में उपलब्ध कराया जाना चाहिए। इस तर्क से, आप परीक्षण के तहत कक्षा के तरीके के अंदर बनाए गए स्थिर आक्रमण, अंतिम या निजी, या "नई" वस्तुओं का नकल नहीं कर सकते हैं। – Kartik
कोई विचार है कि आप इसे EasyMock में कैसे कर सकते हैं? मुझे इस पर कमी की प्रलेखन मिलती है। जब मैं इस तरह PropertyFileWatcher के लिए एक नकली बना देता हूं: PropertyFileWatcher propertyFileWatcher = createMockBuilder (PropertyFileWatcher.class) .withConstructor (file) .createMock(); और अपेक्षित कॉल को चालू करें और फिर से चलाएं: propertyFileWatcher.onChange (फ़ाइल); पुनरावृत्ति (propertyFileWatcher); onChnage विधि को तुरंत कॉल किया जाता है और जानकारी sysout पर मुद्रित होती है, लेकिन मैं यह सत्यापित करना चाहूंगा कि अगर विधि को कॉल किया गया था या नहीं – nkr1pt
परमाणु Boolean समाधान करने में सक्षम mockito का उपयोग न करें। –