当前位置: 首页 > 知识库问答 >
问题:

集成测试通过gradle测试失败,但通过IDE

东门文斌
2023-03-14

我在所有集成测试中不断收到异常,而单元测试运行良好。所有异常如下所示:

UsersControllerTest > getOneUser() FAILED
    java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:132
        Caused by: org.springframework.jdbc.datasource.init.ScriptStatementFailedException at ScriptUtils.java:626
            Caused by: org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException at DbException.java:459

我正在使用Jupiter进行测试。我的观点的上述例外指向data.sql脚本,我必须填充一些数据。对我来说,语法似乎没问题,也运行良好,这意味着如果使用邮递员进行测试,会生成记录:

INSERT INTO AUTHORITY (ID_AUTHORITY,AUTHORITY) VALUES (1,'USER');
INSERT INTO AUTHORITY (ID_AUTHORITY,AUTHORITY) VALUES (2,'MODERATOR');
INSERT INTO AUTHORITY (ID_AUTHORITY,AUTHORITY) VALUES (3,'ADMIN');
INSERT INTO USER (USER_ID,FIRST_NAME,LAST_NAME,ID,PASSWORD,EMAIL,EMAIL_VERIFIED,ACCOUNT_NON_EXPIRED,ACCOUNT_NON_LOCKED,ENABLED,CREDENTIALS_NON_EXPIRED)
VALUES (1,'Alisher','Urunov','b006c568-a79b-4c28-a06c-df7d89579e00','$2y$12$vLPHTGSDyNWBdH.zxuJgfeiExUwh3zT3Cgj8ZZzW.38rDNK/yBJtm','urunov.alisher@some.com',TRUE,TRUE,TRUE,TRUE,TRUE);
INSERT INTO USER (USER_ID,FIRST_NAME,LAST_NAME,ID,PASSWORD,EMAIL,EMAIL_VERIFIED,ACCOUNT_NON_EXPIRED,ACCOUNT_NON_LOCKED,ENABLED,CREDENTIALS_NON_EXPIRED)
VALUES (2,'Ralf','Tester','b006c568-a79b-123s-a06c-df7d89579e00','$2a$10$3D8eyR7FouUb3RjKoVd9r.pBa7wZbOCe4BeIgxJmJmT9kbYGU43qC','ralf@gmail.com',FALSE,TRUE,TRUE,TRUE,TRUE);
INSERT INTO USER (USER_ID,FIRST_NAME,LAST_NAME,ID,PASSWORD,EMAIL,EMAIL_VERIFIED,ACCOUNT_NON_EXPIRED,ACCOUNT_NON_LOCKED,ENABLED,CREDENTIALS_NON_EXPIRED)
VALUES (3,'Ronald','The Great','b006c568-a79b-123s-1248-df7d89579e00','$2a$10$l9jefOjW/P0/dYH.MkHO8OJkNc7SN/G4ZOK1Lk9ND0x08Yta9hJrq','roland.theGreat@gmail.com',TRUE,TRUE,TRUE,TRUE,TRUE);
INSERT INTO USER_AUTHORITY (ID_USER,ID_AUTHORITY) VALUES (1,1);
INSERT INTO USER_AUTHORITY (ID_USER,ID_AUTHORITY) VALUES (1,2);
INSERT INTO USER_AUTHORITY (ID_USER,ID_AUTHORITY) VALUES (1,3);
INSERT INTO USER_AUTHORITY (ID_USER,ID_AUTHORITY) VALUES (3,1);

还考虑了Spring Boot可能存在的配置问题,所以我在gradle中添加了jdbc-starter依赖项。但它似乎仍然失败。

以下是测试的一部分:

@ExtendWith(SpringExtension.class)
@SpringBootTest(classes = UserServiceApplication.class,webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@ContextConfiguration(classes = UserServiceApplication.class)
@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD)
class UsersControllerTest {

  private String adminToken;
  private String userToken;

  @Autowired TestRestTemplate restTemplate;
  @Autowired TokenUtils tokenUtils;

  @BeforeEach
  void setUp() {
   userToken = tokenUtils.generateTokenForUser(user());
   adminToken = tokenUtils.generateTokenForUser(admin());
  }

  @Test
  void getOneUser() {
    HttpHeaders headers = new HttpHeaders();
    headers.add("Authorization", "Bearer "+adminToken);
    headers.add("Access-Control-Expose-Headers", "Authorization");
    ResponseEntity<UserModel> result =
        restTemplate.exchange(
            "/users/userInfo", HttpMethod.GET, new HttpEntity<>(headers), UserModel.class);
    assertEquals("awesome@gmail.com", result.getBody().getEmail());
  }

共有1个答案

经福
2023-03-14

我在项目中似乎有两个依赖关系

1) Sring引导启动测试2)我在mockito 3中添加了一堆jupiter依赖项*

他们一直在冲突。我已经删除了第二个,现在一切似乎都在工作。

 类似资料:
  • 我正在为一个带有多个STS模块的spring boot项目运行maven安装。 Maven日志: 最后,展示了所有模块的成功构建。难道它不应该一发现失败就停止制造战争吗?

  • 首先请原谅我可能的无知,专业的做事方式对我来说很新鲜,如果有什么我没有提到的,请告诉我,我会尽力给你你需要的信息。。。 所以我试图用maven在Eclipse中构建我的webapp,我有一个测试套件 这很好,当我右键单击并以Junit test运行测试时,所有测试都通过了。 当我以Maven build的形式运行它,并以打包一系列测试为目标时,失败了??? 我的maven surefire插件配置

  • 集成测试(生产代码运行良好)失败,同时请求RESTendpoint保护与@Role允许。抛出以下错误: 项目基于JWT的OpenLiberty。不同之处在于UI部分。我的用户界面是基于Angular的,因此对于REST Endpoint以下的身份验证(JWT发布)使用: 因此: UI(Angular)调用与Header 后端在正文和标题中使用新生成的JWT令牌进行响应 UI将此令牌用于针对REST

  • 使用jacoco代理并获取测试覆盖率报告有大量答案。大多数答案都是一半,我有点困惑。 以下是我想做的:1。我的Java应用程序正在某个远程服务器上运行。说IP-192.168.17.7 我使用以下命令运行测试:mvn-Denv=stage-Dmaven。测验失败ignore=true-DsuiteFile=src/test/java/Smoke。xml测试 现在我如何通过使用Jacoco代理获得J

  • 问题内容: 我已经使用JUnit 4和spring-test库编写了一些JUnit测试。当我在Eclipse中运行测试时,可以正常运行并通过。但是,当我使用Maven运行它们(在构建过程中)时,它们无法给出与Spring相关的错误。我不确定是什么引起了问题,JUnit,Surefire或Spring。这是我的测试代码,spring配置以及从Maven获得的异常: PersonServiceTest

  • 我目前正在做一个学校的作业,我正在努力与测试部分。出于某种原因,单元测试单独运行时运行良好,但一起运行时就不行了。我知道这与我在他们之间共享对象有关,而我不应该基于我以前的搜索,但我一生都无法找出需要改变什么来解决这个问题。下面是ApplientService类和ApplientServiceTest类的代码。任何帮助都将非常感谢,因为我已经被困在这个问题上一段时间了,现在知道这可能是其他人会立即