我正在编写一个Spring boot Rest控制器的测试。这个rest控制器将一些值写入DB。
我想使用Spring为这个测试提供的内存数据库。根据这个文档,我必须用@datajpatest
注释测试类,这导致了这个错误:
java.lang.IllegalStateException: Failed to load ApplicationContext
在错误堆栈跟踪中,我看到抛出了以下异常:
由:org.springframework.beans.factory.unsatisfieddependencyException:创建名为'org.springframework.boot.autoconfigure.orm.jpa.hibernatejpaautoconfiguration'的bean时出错:通过构造函数参数0表示的未满足的依赖关系;嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名为“data source”的bean时出错:调用init方法失败;嵌套异常是java.lang.IllegalStateException:未能将DataSource替换为用于测试的嵌入式数据库。如果您想要一个嵌入式数据库,请在类路径上放置一个受支持的数据库,或者调优@AutoConfigureTestDatabase.
的replace属性
这是我正在研究的测试类:
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
@DataJpaTest
public class AuthenticationControllerFTest {
@Autowired
private MockMvc mockMvc;
@MockBean
private AuthenticationManager authenticationManager;
@Autowired
private WebApplicationContext context;
@Autowired
private Filter springSecurityFilterChain;
@Before
public void setup() {
mockMvc = MockMvcBuilders.webAppContextSetup(context)
.addFilters(springSecurityFilterChain).build();
}
@Test
public void testCreate() throws Exception {
String exampleUserInfo = "{\"name\":\"Salam12333\",\"username\":\"test@test1.com\",\"password\":\"Salam12345\"}";
RequestBuilder requestBuilder = MockMvcRequestBuilders
.post("/signup")
.accept(MediaType.APPLICATION_JSON).content(exampleUserInfo)
.contentType(MediaType.APPLICATION_JSON);
MvcResult result = mockMvc.perform(requestBuilder).andReturn();
MockHttpServletResponse response = result.getResponse();
int status = response.getStatus();
Assert.assertEquals("http response status is wrong", 200, status);
}
}
是什么导致了这个错误?
spring.datasource.username = hello
spring.datasource.password = hello
spring.datasource.driver-class-name= com.mysql.jdbc.Driver
spring.datasource.url = jdbc:mysql://localhost:3306/myproject?useSSL=false
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type=TRACE
logging.level.org.springframework.web=DEBUG
server.port = 8443
server.ssl.key-store = classpath:tomcat.keystore
server.ssl.key-store-password = hello
server.ssl.key-password = hello
server.ssl.enabled = true
server.ssl.key-alias=myproject
编辑2
我在pom.xml
中添加了以下内容:
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<scope>test</scope>
</dependency>
我创建了application-test.properties
,内容如下:
spring.datasource.username= root
spring.datasource.password= password
spring.datasource.driver-class-name= org.h2.Driver
spring.datasource.url= jdbc:h2:mem:db;DB_CLOSE_DELAY=-1
@activeprofiles(“test”)
添加到测试类中,当我运行测试时,我会得到一个错误,其中包括以下行:由:org.hibernate.hibernateException引起:当'hibernate.diocial'未设置时,对DiquartResolutionInfo的访问不能为空
假设您使用@springbootapplication
注释类,它支持自动配置,并且具有类路径的h2
依赖项(请参见下文)spring boot
将看到h2
内存数据库依赖项,并创建javax.sql.datasource
实现。默认连接URL为jdbc:h2:mem:testdb
,默认用户名和密码为:username:sa和password:empty。
Application.Properties文件
spring.datasource.url=jdbc:h2:mem:tesdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.testWhileIdle = true
spring.datasource.validationQuery = SELECT 1
spring.jpa.show-sql = true
spring.h2.console.enabled=true // if you need console
H2依赖性
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency> // If you need h2 web console
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
我对Spring boot和JUnit是新手。我在Spring Boot中有一个Rest服务,在那里我接收请求,使用请求参数查询数据库,从查询中接收结果并将其作为响应发送。 我的控制器代码如下所示: 我的JdbcTemplate被作为一个单独类中的bean处理,如下所示 我的代码运行良好。 现在我想使用JUnit4为我的控制器编写单元测试。我使用MockMvc发送请求,但我的单元测试从未起飞。它总
如何为RestController,Service和DAO层编写JUnit测试用例? 我试过 如何验证rest控制器和其他层中的CRUD方法?
我需要在我的主机上运行composer update,因此我使用ssh登录,并尝试在/www文件夹中运行以下命令,我在该文件夹中安装了Laravel和composer: 我得到这个错误: 我正在与我的主机提供商联系,他们告诉我运行命令: 我运行了这个命令,但得到:“无法打开文件:composer” 怎么办?这里的解决方案是什么?
问题内容: 请参阅下面的解决方案: 我正在尝试连接到Parse.com Rest后端并显示对象值中的数据。 HTML(我进行了几次角度调用以确保捕获输出): JAVASCRIPT休息: 这是行不通的,它完全不执行任何操作,甚至在控制台中也没有消息。我知道rest调用具有正确的凭据,因为当我使用rest测试器程序对其进行测试时,我能够获得返回的对象内容。也许网址不应该是绝对的?任何线索都非常受欢迎,
我试图使用mockmvcbuilders.standalonesetup方法为一个spring mvc rest控制器创建一个非常基本的单元测试。我一直收到一个404错误。下面列出了测试应用程序上下文、测试类、控制器和整个堆栈跟踪。欢迎任何指导。 java.lang.AssertionError:状态应为:<200>但实际为:<404>在org.springframework.test.util.
我在一个Spring Boot应用程序中使用H2数据库。但无法在http://localhost:8080/console的浏览器中打开它。我的pom.xml如下所示: Spring引导配置: Springboot配置文件