我正在開發一個使用帶有Gradle插件的STS的Spring Boot應用程序。 我有不同的測試配置,以防止我們的Selenium測試不得不登錄。通過Eclipse運行Spring Boot應用程序拾取測試類
所以在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
我有一個配置登錄等,要求對所有的網頁登錄的等價類。
如果我通過Gradle插件(bootRun)運行應用程序,一切工作正常。但是,如果我通過Eclipse直接運行或調試它(例如,右鍵單擊項目,Run As-> Spring Boot App或在彈出窗口或Java視圖中單擊運行/調試按鈕),則測試配置被應用,所以訪問被授予所有沒有登錄的頁面。
我猜測,當我以這種方式啓動應用程序時,測試類將被包含在類路徑中。 有沒有簡單的方法來防止這種情況發生?
我可以想象你可以通過向此類添加@Profile(「test」)來解決此問題+ @ActiveProfiles(「test 「)'在測試中。這將會使該bean在這個配置文件中成爲condtional。請參閱http://docs.spring.io/spring/docs/current/spring-framework-reference/html/integration-testing.html#testcontext-ctx-management-env-profiles – zapl
看起來像一個很好的潛在解決方案,儘管甚至在我將@profile(「test」)添加到測試配置類之後,在我運行應用程序時它仍在使用。我稍後會進一步調查 - 謝謝。 –
我可以確認問題幾乎可以肯定,運行時類路徑包括'測試'的東西。這是一個已知的問題,雖然我不認爲它有一個問題票。這是由於gradle的工具模型沒有在'test'和'runtime'類路徑之間區分引起的問題。恐怕最簡單的方法來避免這個問題是切換到使用maven。我知道m2e/maven正確地做到了這一點。 – Kris