我使用Spring Boot、PostgreSQL、Maven和JUnit制作了一个简单的Web应用程序。在我的IDE(mvn清除验证)中运行它时,一切都很完美,但是在特拉维斯CI中运行时,我遇到了这个异常:
错误创建在类路径资源[org/springframe/boot/自动配置/orm/jpa/HibernateJpaAutoConfiguration.class]中定义名称'entityManagerFactory'的bean:调用init方法失败;嵌套异常是javax.persistence.持久性例外:[持久性单元:默认]无法构建Hibernate SessionFactory
还有很多其他的。我的测试在IDE中也运行得很好。有人能告诉我为什么吗?我的代码在这里:
实体:
@Entity
@Table(name = "contacts")
public class Contact extends BaseEntity{
@Column(name = "name", nullable = false)
private String name;
public Contact() {
}
public Contact(String name) {
this(null,name);
}
public Contact(Integer id, String name) {
super(id);
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Contact{" +
"id='" + id + '\'' +
"name='" + name + '\'' +
'}';
}
}
存储库:
@Repository
public class ContactRepositoryImpl implements ContactRepository{
private static final Logger LOG = LoggerFactory.getLogger(ContactRepositoryImpl.class);
@Autowired
private ProxyContactRepository proxyContactRepository;
private Pattern regexPattern;
@Override
public List<Contact> getAllSorted(String nameFilter) {
List<Contact> listOfAllContacts = new CopyOnWriteArrayList<>();
try {
regexPattern = Pattern.compile(nameFilter);
if (!nameFilter.isEmpty() || nameFilter.length() != 0) {
listOfAllContacts.addAll(getAll().stream().filter(contact -> notDoMatch(contact.getName())).collect(Collectors.toList()));
} else {
LOG.warn("Regex parameter " + "'" + nameFilter + "'" + " is empty");
throw new NotFoundException("Regex parameter is empty");
}
return listOfAllContacts;
}
catch (PatternSyntaxException exception){
LOG.error("Regex parameter " + "'" + nameFilter + "'" + " is invalid");
throw new NotFoundException("Regex parameter is invalid");
}
}
@Override
public List<Contact> getAll() {
return proxyContactRepository.findAll();
}
private boolean notDoMatch(String word){
Matcher matcher = regexPattern.matcher(word);
return !matcher.matches();
}
}
控制器:
@RestController
@RequestMapping("/contacts")
public class ContactController extends AbstractContactController{
@RequestMapping(method = RequestMethod.GET, params = "nameFilter")
public List<Contact> getSortedPage(@RequestParam("nameFilter") String nameFilter){
return super.getAllSorted(nameFilter);
}
@RequestMapping(method = RequestMethod.GET)
public List<Contact> getAllPage(){
return super.getAll();
}
}
特拉维斯。yml
language: java
script: mvn clean verify
jdk: oraclejdk8
services:
- postgresql
before_script:
- psql -c 'create database hello;' -U postgres
app.properties:
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost:5432/hello
spring.datasource.username=postgres
spring.datasource.password=password
spring.jpa.hibernate.ddl-auto=validate
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQL81Dialect
我建议使用H2进行集成测试,而不是PostgreSQL。您不需要设置任何TravisCI服务。您的测试套件将更加易于维护,并且不依赖于外部服务。您还可以使用H2与PostgreSQL的兼容性模式。
我将Rails5与PostgreSQL一起部署,以便在Heroku中免费应用程序。这是我在中的配置:
注意:——如果你不喜欢sudo,可以查看非root用户使用 在Docker中安装PostgreSQL 如果Docker Hub中没有你需要的Docker镜像,你可以创建自己的镜像,开始先创建一个Dockerfile: 注意:这个PostgreSQL仅设置用途。请参阅PostgreSQL文档来调整这些设置,以便它是安全的。 # # example Dockerfile for http://docs
在Docker中安装PostgreSQL 如果Docker Hub中没有你需要的Docker镜像,你可以创建自己的镜像,开始先创建一个Dockerfile: 注意:这个PostgreSQL仅设置用途。请参阅PostgreSQL文档来调整这些设置,以便它是安全的。 # # example Dockerfile for http://docs.docker.com/examples/postgresq
航班类别:package com.rahul.flightreservation.entities; 表说明:ID航班号运营航空公司出发城市到达城市日期出发估计日期出发时间 错误:Hibernate:from Fligher where departurecity=?和到达=?和DateofDeparture=?2020-06-28 20:32:13.138警告5744---[nio-8083-e
Dave使用Flyway为Alice和Bob初始化模式,因此他们都有foo table和bar函数。Dave使用jOOQ生成java api,并在运行时将开发模式映射到用户模式。戴夫以前和他的任何一个客户都没有关系,突然发现自己是鲍勃的侄子。 但是爱丽丝和鲍勃后来都回来找戴夫,让他为他们写一些自动化。因此,Dave决定创建一个机器用户Rob,他可以访问Alice和Bob的模式。他可以重用所有相同的
各位工程师,大家好! 我在试图创建一个胖罐子来执行cucumber测试时遇到了一个问题。最初,我按照指南从Baeldung设置测试。当在Maven测试阶段执行时,测试运行良好。当运行带有参数的mvn exec:java命令时,它也能正常工作。 然而,当我创建了一个胖罐子并试图执行测试时,我面临着错误 以下是我的项目的解释,它基本上与Baeldung的测试项目完全一样。 项目结构 直接从可执行jar