Java:@SpringApplicationConfiguraction和@WebIntegrationTest在Spring Boot中不能使用的解决方案

@SpringApplicationConfiguraction和@WebIntegrationTest解决方案

在Spring Boot 1.5.7 中@SpringApplicationConfiguraction和@WebIntegrationTest中不能使用了.

找了半天总算找到了解决方案.

记录如下.

java标志

源码

@SpringApplicationConfiguraction

// 用下面这个替换.

@SpringBootTest(classes = ReadingListApplication.class,webEnvironment= SpringBootTest.WebEnvironment.RANDOM_PORT)


// 随机服务器端口号
@WebIntegrationTest(randomPort = true)

// 使用下面这个替换:

@SpringBootTest(webEnvironment= SpringBootTest.WebEnvironment.RANDOM_PORT)

// 获取端口.

 // 用下面这个替换. @Value("${local.server.port}")
    @LocalServerPort
    private int port;

如果在Spring Boot中使用了Spring Security,并且使用了自定义UserDetails,在测试的时候需要使用如下方式:

 @Test
    @WithUserDetails(userDetailsServiceBeanName="userDetailsCustom",value="test")
    @WithMockUser(username="test", password="test", roles="READER")
    public void homePage_authenticatedUser() throws Exception {
        Reader expectedReader = new Reader();
        expectedReader.setUsername("test");
        expectedReader.setPassword("test");
        expectedReader.setFullname("Walt Disney");

        mockMvc.perform(get("/"))
                .andExpect(status().isOk())
                .andExpect(view().name("readingList"))
                .andExpect(model().attribute("reader",
                        samePropertyValuesAs(expectedReader)))
                .andExpect(model().attribute("books", hasSize(0)))
                .andExpect(model().attribute("amazonID", "habuma-20"));
    }

//   

@Bean
    public UserDetailsService userDetailsCustom(){
       return  new UserDetailsService() {
            @Override
            public UserDetails loadUserByUsername(String username)
                    throws UsernameNotFoundException {
                // readerRepository 是个实现了JpaRepository的空接口.
                UserDetails userDetails = readerRepository.findOne(username);
                if (userDetails != null) {
                    return userDetails;
                }
                throw new UsernameNotFoundException("User '" + username + "' not found.");
            }
        };
    }

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据