मैं अपने वसंत एमवीसी नियंत्रक का परीक्षण करना चाहता हूं।यूनिट परीक्षण नियंत्रक के लिए वसंत के इंजेक्शन का उपयोग कैसे करते हैं?
नियंत्रक एक सेवा है:
@Autowired
UserService userService
और मेरे उपयोगकर्ता सेवा पर निर्भर करता है (autowired) मेरी UserDao और MongoDB आदि जैसे कुछ अन्य सेवाओं
अब मैं व्यापार तर्क में परीक्षण किया जाना चाहता हूँ मेरा उपयोगकर्ता सेवा, लेकिन मैं अपने उपयोगकर्ताडाओ और मोंगोब आदि से प्रतिक्रियाओं का नकल करना चाहता हूं
मैं अपना यूनिट परीक्षण सही तरीके से कैसे सेटअप करूं?
क्या मैं वसंत कंटेनर की एक्सएमएल फ़ाइल का पुन: उपयोग कर सकता हूं जिसमें मेरे सभी बीन्स आदि हैं या क्या मैं एक नया बना सकता हूं? (मुझे लगता है कि मुझे यहां वसंत कंटेनर शामिल करना है)
इस पर कुछ मार्गदर्शन की तलाश में, किसी भी ट्यूटोरियल की सराहना की जाएगी।
@Controller
public class UserController {
@Autowired
UserService userService;
}
:
अद्यतन
क्या मैं अजीब लगता है कि मेरी वसंत नियंत्रक (कि नियंत्रक से लागू नहीं करता है) के लिए मैं मैन्युअल रूप से मेरी सेवा, यानी सेट करने के लिए मेरे निजी varialbe पर पहुंच सकता था है
और मेरी इकाई परीक्षण में मैं कर सकता:
UserController controller = new UserController();
controller.userService = ....
लेकिन मेरे UserService, जो है UserDao autowired के लिए, मैं नहीं पहुंच सकते उपयोगकर्तादाओ संपत्ति:
UserService userService = new UserServiceImpl();
userService.userDao = .... // not available
यह समझ में आता है क्योंकि यह निजी है, लेकिन यह मेरे नियंत्रक के लिए कैसे काम कर रहा है?
पुन: अद्यतन, नियंत्रक, सेवा, और परीक्षण कौन से पैकेज हैं? यदि परीक्षण एक ही पैकेज में है, तो यह डिफ़ॉल्ट-स्कोप्ड गुणों तक पहुंच सकता है। एक एक्सेस संशोधक को ओमेट करना * संपत्ति * निजी नहीं है, बल्कि [पैकेज-निजी] (http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html)। –
मेरे पास एक ही पैकेज में है। आह मैं देखता हूं, मुझे लगता है कि यह निजी था। मैं सोच रहा था कि एक रिएक्टर के दौरान इंटेलिजे डिफ़ॉल्ट रूप से फ़ील्ड को निजी बनाता है। तो मुझे उन्हें पैकेज के रूप में निजी रखना चाहिए? – Blankman
कोई "चाहिए" नहीं है, यह सिर्फ निर्भर करता है। पैकेज-प्राइवेट के साथ मेरी एकमात्र चिंता यह है कि आप अभी भी कुछ अनजाने में पहुंच सकते हैं; मैं चीजों को निजी रखने और सेटर्स का उपयोग करना पसंद करता हूं, लेकिन मेह। –