java - 测试在本地通过,但在 git 管道中失败
问题描述
我对 Gitlab CI/CD 有疑问。我正在用 Gradle 制作一个 Java 项目。当我在本地运行测试时,它们通过了。但是,当我推送到我的 git 存储库时,测试管道失败。这是它给我的错误截图: Gitlab pipeline result
这是我的本地测试。我在 SpringBoot 中使用 Mockito 测试。
package com.its.backend;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.when;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import com.its.backend.entities.User;
import com.its.backend.repositories.UserRepository;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.test.context.junit4.SpringRunner;
import org.junit.runner.RunWith;
@RunWith(SpringRunner.class)
@SpringBootTest
public class UserRepositoryTest {
@MockBean
private UserRepository repo;
@Test
void saveUserTest(){
User user = new User("lala", "123");
repo.save(user);
when(repo.findByUsername(user.getUsername())).thenReturn(user);
assertEquals("lala", repo.findByUsername(user.getUsername()).getUsername());
}
@Test
void showAllUsersTest(){
User user1 = new User("Ana", "321");
repo.save(user1);
User user2 = new User("Leo", "leo");
repo.save(user2);
List<User> users = new ArrayList<User>();
users.add(user1);
users.add(user2);
when(repo.findAll()).thenReturn(users);
assertEquals(2, users.size());
}
@Test
void findUserbyId(){
User user = new User("Al", "277");
repo.save(user);
Optional<User> u = Optional.of(user);
when(repo.findById(user.getId())).thenReturn(u);
User userfound = u.get();
assertEquals(user.getId(), userfound.getId());
}
@Test
void updateUser(){
User user = new User("Seba", "bebe");
repo.save(user);
String newUsername = "Mai";
user.setUsername(newUsername);
repo.save(user);
when(repo.findByUsername(user.getUsername())).thenReturn(user);
assertEquals(newUsername, user.getUsername());
}
@Test
void deleteUser(){
User user = new User("Kjala", "722");
repo.save(user);
when(repo.existsById(user.getId())).thenReturn(false);
assertEquals(false, repo.existsById(user.getId()));
}
}
我的 .yml 文件中的测试阶段如下所示:
test:
stage: test
allow_failure: true
script: gradle check
cache:
key: "$CI_COMMIT_REF_NAME"
policy: pull
paths:
- build
- .gradle
最后,这些是我的 build.gradle 中的依赖项: build.gradle dependencies
任何建议都会有所帮助。
解决方案
推荐阅读
- r - Plotly R 隐藏所有标签、刻度、图例等
- python - pyspark python数据框在不同功能中的重用
- node.js - 如何在弹性搜索查询中添加 AND OR?
- mysql - 提高特定 MySQL 查询的性能
- android - 如何将图像从 Firebase 下载到 ImageView
- mamp - 如何在 MAMP 中同时运行两个本地开发项目
- excel - 如何以 Mon-Yr 格式格式化数据透视表月份
- hive - 如何根据hive中的结束日期将记录拆分为多个记录
- reactjs - 如何在浏览器中显示表达式?(反应,VS 代码)
- java - 如何合并同一个非常大的项目的 2 个版本