我在SpringBoot 2上有一个应用程序。x个
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan
public class WebSpringBootJarApplication extends SpringBootServletInitializer implements WebApplicationInitializer {
public static void main(String[] args) {
SpringApplication.run(WebSpringBootJarApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(WebSpringBootJarApplication.class);
}
}
pom。xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>weblogic.war.spring.boot</groupId>
<artifactId>weblogic-war-spring-boot</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>weblogic-war-spring-boot</name>
<packaging>war</packaging>
这是应该自动连接的类。。。
@Service
public class CompanyReadServiceImpl implements CompanyReadService {
private CompanyMapper companyMapper;
private CompanyReadRepository companyReadRepository;
@Autowired
public CompanyReadServiceImpl(CompanyMapper companyMapper,
CompanyReadRepository companyReadRepository) {
this.companyMapper = companyMapper;
this.companyReadRepository = companyReadRepository;
}
@Transactional
@Override
public CompanyDto getById(Long id) {
Company company = find(id);
return transform(company);
}
@Transactional
@Override
public boolean isByName(String name) {
return this.companyReadRepository.findByName(name).isPresent();
}
@Transactional
@Override
public CompanyDto getByName(String name) {
Company company = companyReadRepository.findByName(name).orElse(new Company());
return transform(company);
}
private Company find(Long id){
return this.companyReadRepository.findById(id).orElseThrow(() -> new RuntimeException("User not found"));
}
private CompanyDto transform(Company company){
return this.companyMapper.companyToCompanyDto(company);
}
}
pom。xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
更新
这个类来自类似的项目,它可以工作(但Intellij的想法将字段标记为错误)
在src/test/java/weblogic/war/Spring/boot/service/read/CompanyReadServiceTest.java
@RunWith(SpringRunner.class)
@SpringBootTest
public class CompanyReadServiceTest {
private static final Logger LOGGER = LoggerFactory.getLogger(CompanyReadServiceTest.class);
private static String NAME_METHOD_READ_BY_NAME_BOOLEAN = "isByName";
@Autowired
private CompanyReadRepository companyReadRepository;
@Autowired
private CompanyReadService companyReadService;
@Autowired
private CompanyReadRepositoryTest companyReadRepositoryTest;
@Autowired
private CompanyMapper companyMapper;
@Test
public void getById() {
Company lastEntry = getLastEntry();
Long idExpected = null;
if(lastEntry != null) idExpected = lastEntry.getId();
if(idExpected != null){
CompanyDto companyDto = searchByIdEntry(idExpected);
Long idActual = companyDto.getId();
Assert.assertEquals("Lookup of entry - failed!!!", idExpected, idActual );
}
}
@Test
public void isByName() {
Company lastEntry = getLastEntry();
String name = null;
if(lastEntry != null) name = lastEntry.getName();
if(name != null){
boolean entryByName = isEntryByName(name);
Assert.assertTrue("Lookup of entry - failed", entryByName);
}
}
private CompanyDto searchByIdEntry(Long id){
return this.companyReadService.getById(id);
}
private boolean isEntryByName(String name){
return getByNameReflection(companyReadService, NAME_METHOD_READ_BY_NAME_BOOLEAN, name);
}
private Company getLastEntry() {
Optional<Company> lastEntry = companyReadRepositoryTest.getLastEntry();
return lastEntry.orElse(null);
}
}
我复制了一个项目。
更新\u 2
我清除了本地Maven存储。IDE还(在编译时)突出显示可能未自动连接的字段。但我运行了一个测试类,它可以工作。。。
为什么?(这可能是在我刚刚重命名包并编辑pom.xml时开始的)
自动装配在应用程序的工作范围内发生良好。但它在测试应用程序的范围内不起作用。
谁可以分享关于这个问题的想法?
您正在尝试为JUnit目的加载实际的应用程序上下文。您可以使用下面的WebSpringBootJarApplication类是原始Spring上下文来做到这一点
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = {WebSpringBootJarApplication.class})
public class HelloWorldTest {
@Autowired(required = true)
SomeService service;
@Test
public void helloTest() {
System.out.println(service);
}
}
我有几个繁重的Spring集成测试(是的,这不是最好的方法,我没有时间正确地模拟所有外部dep) 下面是测试的典型注释 由于以下原因,测试会定期失败: 这里有两个问题:1、让测试共存的正确方式是什么?我在surefire插件中设置了forkCount=0。好像有帮助 2.1. 在每次测试期间,我实际上不需要启动所有的
我有一个用selenium进行单元测试和集成测试的项目。 当我用IntelliJ执行cucumber集成测试时,它工作得很好,您可以看到: 用Intellij执行cucumber集成测试 但是,当我执行mvn集成测试时,似乎没有发现任何联调: 故障保护输出 我定义了以下POM: > 文件夹结构是文件夹结构 mvn集成-测试输出https://drive . Google . com/file/d/
全部的 我在我的主要Spring Boot应用程序类中定制了,如下所示。 其中,是的扩展。我的POJO是用Jackson的注释的 我使用和注释通过HTTP公开了POJO。这很好,当我运行应用程序并访问endpoint时,会调用自定义过滤器。 现在我编写了一个集成测试,如下所示。 当我运行测试时,obj为null,我看到一个错误,没有配置FilterProvider 我做错了什么,如何纠正? 我的文
我现在开始学习Java和Spring Boot,并且在集成测试中遇到了一些依赖注入问题。我在src/main/java/com/rfd/domain/service下有一个名为TransactionService的类,它被标记为@Service,它有另一个依赖项,其中一个是Spring Boot创建的存储库。当我启动应用程序时,它会正确启动,因此我假设依赖项正在正确解析。这是总结的类: 现在,我在
我正在使用一个带有spring boot 2.0.0.rc1的多项目分级器。我的子项目之一是SpringBoot应用程序,其中包含了我的集成测试。 集成测试用WebEnvironment.random_port标记为@springboottest。由于未解析的依赖关系(在另一个子项目中声明的服务,的同级),测试失败,使用了gradle命令行,但在Eclipse IDE中成功。 如果有人有主意?如何