2016-04-24 5 views
7

Я пытаюсь написать тест безопасности весны, как описано здесь http://docs.spring.io/spring-security/site/docs/4.0.x/reference/htmlsingle/#test-mockmvc-setup. Мне нужно импортировать SecurityMockMvcConfigurers в качестве статического импорта, но моя IDE не находит класс.Не удается найти SecurityMockMvcConfigurers

Мой pom.xml выглядит следующим образом:

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.4.0.M2</version> 
    <relativePath/> <!-- lookup parent from repository --> 
</parent> 

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <java.version>1.8</java.version> 
</properties> 

<dependencies> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-security</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-test</artifactId> 
     <scope>test</scope> 
    </dependency> 
</dependencies> 

Spring загрузки 1.4.0.M2 импортирует Spring Security 4.0.4.RELEASE. Я не могу найти класс в этой версии. Какая дополнительная зависимость мне нужна? Или что еще я не рассматривал?

ответ

24

Недостающая зависимость была:

<dependency> 
    <groupId>org.springframework.security</groupId> 
    <artifactId>spring-security-test</artifactId> 
    <version>4.0.4.RELEASE</version> 
</dependency> 
+9

Для копировальных аппаратов: не забудьте добавить тест области. – beat

+0

Не можете найти, где добавить этот код. Я попробовал в контексте root-context и servlet-context, оба дали ошибки «Строка 31 в XML-документе из URL-адреса [файл: src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml] недействителен;' – Siddharth

+0

это предпосылка, что ваш проект настроен как проект maven. Затем добавьте этот код в раздел зависимостей вашего файла pom.xml. –

-2

В SecurityMockMvcConfigurers класс входит в

<dependency> 
<groupId>org.springframework.security</groupId> 
<artifactId>spring-security-test</artifactId> 
<version>4.2.1.RELEASE</version> 
</dependency> 

В других выпусках SecurityMockMvcConfigurers не могут существовать.

Однако есть класс MockMvcConfigurer, возможно, вы можете работать с этим вместо этого?

относительно: но эта зависимость не содержит соответствующий класс.

Да, вы правы, что класс не включен в банку. Итак, я думаю, вы должны использовать то, что есть. Во всяком случае, этот класс достаточно прост и исходный код здесь: SecurityMockMvcConfigurers

Просто скопируйте код в своем собственном классе, и вы сделали.

+0

спасибо за ваш ответ, но эта зависимость не содержит соответствующий класс. –

0

Требуемая зависимость для org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers класса является org.springframework.security:spring-security-test зависимость.

Этот вопрос отмечен Spring Boot и Spring Boot обеспечивает зависимость как управляемую зависимость в pc spring-boot-starter-parent.
Ваш pom наследует очень вероятно от spring-boot-starter-parent.
Так что прежде всего не указывайте версию без уважительной причины и просто используйте версию, унаследованную от родителя.
Этого достаточно:

<dependencies> 
    ... 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-test</artifactId> 
     <scope>test</scope>   
    </dependency> 
    ... 
<dependencies> 

Например, с весны загрузки 2.0.0.M5, управляемая версия

<dependency> 
    <groupId>org.springframework.security</groupId> 
    <artifactId>spring-security-test</artifactId> 
    <version>5.0.0.M5</version> 
    </dependency> 

M5 это не просто случайность.
Они предназначены для работы «лучше» вместе.

Заметим, что зависимость org.springframework.boot:spring-boot-starter-test не тянет зависимость spring-security-test.

Если вы не используете Spring Boot, вам следует попытаться указать версию spring-security-test в соответствии с версией Core Spring, используемой приложением.

Смежные вопросы