我有一个sprig引导(版本1.5.6)应用程序,它使用以下内容:
现在,我正在为这个应用程序创建单元测试。在一个测试用例中,我有以下注释:
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT, properties = { "spring.cloud.enabled=false" })
测试正确初始化了jpa存储库,我能够测试相同的。
然后我有另一个带有以下注释的测试:
@RunWith(SpringRunner.class)
@WebMvcTest(MyRestController.class)
此测试设置Mockmvc,但不会初始化JPA存储库。它只初始化配置的MVC部分。但我也需要初始化JPA存储库。我用数据设置了测试数据。作为内存H2数据库加载的sql文件。我遇到的错误是:
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' available
我尝试了许多没有成功的事情:
我确实在上下文初始化时看到了以下内容:
.s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
现在由于Spring能够在第一次测试中自动装配jpa存储库并且它在应用程序中运行良好,我认为它应该也能够在webMvc测试用例中自动装配存储库。
我可以创建一个配置文件,并在测试包中初始化实体管理器、数据源等,但如果有一种方法可以自动连接spring,那么我不想管理该配置。
请提出建议。
我看到您有WebMvcTest注释。这个特定的测试只测试web层,它不加载整个应用程序上下文,只加载web上下文。您可能需要切换到SpringBootTest和AutoConfigureMockMvc来测试整个堆栈。
使用Spring Boot进行JPA测试的方法是使用DataJpaTest注释。它会自动配置所有内容,前提是类路径中有内存中的DB(如果使用maven,请确保它在“测试”范围内)。它还提供了TestEntityManager,它是JPA的EntityManager接口的实现,具有一些有用的测试功能。
示例:
@RunWith(SpringRunner.class)
@DataJpaTest
pubic class EntityTest {
@Autowired TestEntityManager entityManager;
@Test
public void saveShouldPersistData() throws Exception {
User saved = entityManager.persistFlushFind(new User("username", "password"));
assertNonNull(saved);
}
}
在您的pom.xml中,您可以添加H2数据库(Spring Boot也可以自动配置Derby和HSQLDB)
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>test</scope>
</dependency>
当应用程序启动时,我正在尝试创建mysql数据库。我尝试了波纹管配置,但无法实现,如果有人对此有想法,请告诉我,
本文向大家介绍centOS7安装MySQL数据库,包括了centOS7安装MySQL数据库的使用技巧和注意事项,需要的朋友参考一下 1、先检测系统是否自带原有版本mysql安装包,如果有要先卸载删除,不然不能成功安装和启动; # rpm -qa|grep mysql 查看有哪些安装包,如果直接跳过,说明没有安装包,记忆可以直接进入第2、3 # yum remove mysql mysql
这节课我们将来配置MySQL数据库,启动运行在另外一个容器中,然后把它link到users-service容器中...... 增加Flask-SQLAlchemy和PyMySQL到requirementx.txt文件中: Flask-SQLAlchemy==2.3.2 PyMySQL==0.8.0 当然要记得安装这些依赖包: (tdd3)$ pip install -r requirements
MySQL是最著名的开源数据库,现在正在开发的5.0版将具有大量的新特性,如存储过程和事务处理等。MySQL的性能正一步步地迫近Oracle、DB2等商业大型数据库,给这些产品造成了很大的压力。 在Debian中安装MySQL服务器是很方便的,使用apt-get命令即可完成。 debian:~# apt-get install mysql-server mysql-client mysql-s
安装Mysql服务器 官方文档:安装和升级MySQL 这里给出在windows和linux中安装mysql服务器的方法,同时补充一种在docker中安装mysql容器的方法。 TIPS: 因为mysql在centos7中已经开始收费,因此本文在linux中实际安装的是mariadb。 windows 在windows下使用mysql服务器有两种方式,一种是使用mysql提供的MSI Install
主要内容:1.分析,2.样例讲解1,3.样例讲解2,4.总结1.分析 先看@SpringBootApplication @SpringBootConfiguration:标记当前类为配置类 @EnableAutoConfiguration:开启自动配置 @ComponentScan:扫描主类所在的同级包以及下级包里的Bean @EnableAutoConfiguration: @Import(AutoConfigurationImportSelector.