簡體   English   中英

通過Eclipse運行Spring Boot應用程序將獲取測試類

[英]Running Spring Boot application through Eclipse picks up test classes

我正在使用帶有Gradle插件的STS開發Spring Boot應用程序。 我有不同的測試配置,以防止我們的Selenium測試必須登錄。

所以在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我有一個等效的類可配置login等,要求所有頁面都登錄。

如果我通過Gradle插件(bootRun)運行該應用程序,則一切正常。

但是,如果我直接通過Eclipse運行或調試它(例如,右鍵單擊項目,Run As-> Spring Boot App或通過單擊Spring或Java視圖中的運行/調試按鈕),則將應用測試配置,因此訪問無需登錄即可授予所有頁面。

我猜測以這種方式啟動應用程序時,測試類已包含在類路徑中。 有沒有簡單的方法可以防止這種情況發生?

從eclipse運行測試時,類路徑是通過eclipse(而不是通過maven或gradle)准備的。

Eclipse每個項目僅使用一個類路徑,並且對依賴范圍(例如“編譯”或“測試”)一無所知。 因此,類路徑始終包含引用項目的任何資源。

您無法更改這種日食行為。 您需要使用命名約定,配置文件等,以避免意外使用測試資源。

您可以將@TestComponent附加到測試配置類。 在應用程序的組件掃描期間,將跳過這些bean配置。 根據組件掃描配置,您需要定義一個@ComponentScan排除過濾器: excludeFilters = @ComponentScan.Filter(value = TestComponent.class, type = FilterType.ANNOTATION))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM