चुनता है मैं ग्रैडल प्लगइन के साथ एसटीएस का उपयोग कर स्प्रिंग बूट एप्लिकेशन विकसित कर रहा हूं। हमारे सेलेनियम परीक्षणों को लॉगिन करने से रोकने के लिए, मेरे पास परीक्षणों के लिए एक अलग कॉन्फ़िगरेशन है।एक्लिप्स के माध्यम से स्प्रिंग बूट एप्लिकेशन चलाना परीक्षण कक्षाएं
तो src/test/java/etc
में मैं कुछ इस तरह है:
@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true)
@EnableWebSecurity
public static class SecurityConfig extends WebSecurityConfigurerAdapter
{
@Override
protected void configure(HttpSecurity http) throws Exception
{
http.authorizeRequests().anyRequest().permitAll();
}
}
जबकि src/main/java
में मैं एक बराबर वर्ग के लिए लॉग इन आदि कॉन्फ़िगर करता है, सभी पृष्ठों के लिए लॉगिन की आवश्यकता होती है की है।
यदि मैं ग्रैडल प्लगइन (बूटरुन) के माध्यम से एप्लिकेशन चलाता हूं, तो सब ठीक काम करता है।
हालांकि, अगर मैं सीधे ग्रहण के माध्यम से इसे चलाता या डिबग करता हूं (उदाहरण के लिए प्रोजेक्ट पर राइट क्लिक करें, स्प्रिंग बूट ऐप चलाएं या पर क्लिक करके स्प्रिंग या जावा व्यू में रन/डीबग बटन) तो टेस्ट कॉन्फ़िगरेशन लागू किया गया है, इसलिए लॉगिन के बिना सभी पृष्ठों पर पहुंच प्रदान की जाती है।
मुझे लगता है कि जब मैं इस तरह से एप्लिकेशन शुरू करता हूं तो टेस्ट क्लास क्लासपाथ में शामिल किया जा रहा है। क्या ऐसा होने से रोकने के लिए कोई आसान तरीका है?
मैं कल्पना कर सकता आप 'इस वर्ग +' @ActiveProfiles को जोड़ने @Profile ("परीक्षण") 'द्वारा इस समाधान कर सकता है (" परीक्षण: घटक विन्यास स्कैन के आधार पर आप एक @ComponentScan को बाहर फिल्टर परिभाषित करने की जरूरत ") परीक्षण पर। इससे उस प्रोफाइल पर बीन कंडिशनल बन जाएगा। Http://docs.spring.io/spring/docs/current/spring-framework-reference/html/integration-testing.html#testcontext-ctx-management-env-profiles – zapl
एक अच्छा संभावित समाधान की तरह दिखता है, हालांकि यहां तक कि परीक्षण कॉन्फ़िगरेशन क्लास में @profile ("test") को जोड़ने के बाद भी जब मैं ऐप चलाता हूं तब भी इसका उपयोग किया जा रहा है। मैं बाद में इसकी जांच करूंगा - धन्यवाद। –
मैं पुष्टि कर सकता हूं कि लगभग निश्चित रूप से समस्या यह है कि रनटाइम क्लासपाथ में 'टेस्ट' चीजें शामिल हैं। यह एक ज्ञात समस्या है हालांकि मुझे नहीं लगता कि इसके लिए कोई मुद्दा टिकट है। यह एक समस्या है जो ग्रेडल के टूलींग मॉडल के कारण 'टेस्ट' और 'रनटाइम' क्लासपाथ के बीच distinuguishing नहीं है। मुझे डर है कि इस समस्या से बचने का सबसे आसान तरीका मैवेन का उपयोग करने के लिए स्विच करना है। मुझे पता है कि m2e/maven यह सही ढंग से करता है। – Kris