相关疑难解决方法(0)

定期重置Embedded H2数据库

我正在一个演示服务器中设置我的应用程序的新版本,并希望找到一种每天重置数据库的方法.我想我总是可以执行一个cron作业执行drop并创建查询,但我正在寻找一种更清洁的方法.我尝试使用具有drop-create方法的特殊持久性单元,但它不起作用,因为系统经常连接和断开服务器(按需).

有更好的方法吗?

h2 reset

42
推荐指数
3
解决办法
5万
查看次数

如何在测试之间重置

我有一个测试课

@RunWith(SpringRunner.class)
@DataJpaTest
Run Code Online (Sandbox Code Playgroud)

我有两个测试.在每个测试中我都做同样的操作,坚持对象.只有查找呼叫是不同的.

如果我同时运行两个测试,它们会失败但如果我一个接一个地运行测试它们就会成功.

每次测试之间没有重置.怎么做?在每个测试中,只有对存储库的调用是不同的.

@Test
public void findTopByCommerceCommerceIdOrderByEntryTimeDesc() {

    Long commerceId = 1L;

    Commerce commerce = new Commerce();
    commerce.setName("test");
    this.entityManager.persist(commerce);

    Member member = new Member();
    member.setCommerce(commerce);
    member.setMan(true);
    member.setName("bob binette");

    this.entityManager.persist(member);

    Visit visit1 = new Visit();
    visit1.setCommerce(commerce);

    visit1.setMember(member);
    visit1.setEntryTime(LocalDateTime.of(LocalDate.now(), LocalTime.now()));

    Visit visit2 = new Visit();
    visit2.setCommerce(commerce);

    visit2.setMember(member);
    visit2.setEntryTime(LocalDateTime.of(LocalDate.now().minusDays(2), LocalTime.now()));

    this.entityManager.persist(visit1);
    this.entityManager.persist(visit2);

    Visit visit = visitRepository.findTopByCommerceCommerceIdOrderByEntryTimeDesc(commerceId);

    assertEquals(visit.getVisitId(), Long.valueOf("1"));

}
Run Code Online (Sandbox Code Playgroud)

编辑

我把所有的代码:http://pastebin.com/M9w9hEYQ

java spring junit4 spring-data-jpa spring-boot

27
推荐指数
4
解决办法
1万
查看次数

如何在每次单元测试后重置数据库状态而不将整个测试作为事务处理?

我使用的是Spring 3.1.1.RELEASE,Hibernate 4.1.0.Final,JPA 2,JUnit 4.8.1和HSQL 2.2.7.我想在我的服务方法上运行一些JUnit测试,并且在每次测试之后,我希望回滚写入内存数据库的任何数据.但是,我不希望将整个测试视为事务.例如在这个测试中

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({ "classpath:test-context.xml" })
public class ContractServiceTest 
{
    …

    @Autowired
    private ContractService m_contractService;

    @Test
    public void testUpdateContract()
    {
        // Add the contract
        m_contractService.save(m_contract);
        Assert.assertNotNull(m_contract.getId());
        // Update the activation date by 6 months.
        final Calendar activationDate = Calendar.getInstance();
        activationDate.setTime(activationDate.getTime());
        activationDate.add(Calendar.MONTH, 6);
        m_contract.setActivationDate(activationDate.getTime());
        m_contractService.save(m_contract);
        final List<Contract> foundContracts = m_contractService.findContractByOppId(m_contract.getOpportunityId());
        Assert.assertEquals(foundContracts.get(0), m_contract);
    }   // testUpdateContract
Run Code Online (Sandbox Code Playgroud)

有三个服务调用("m_contractService.save","m_contractService.save"和"m_contractService.findContractByOppId"),每个调用都被视为一个事务,我想要它.但我不知道在每次单元测试后如何将内存数据库重置为其原始状态.

如果我需要提供其他信息,请与我们联系.

junit spring transactions hsqldb

23
推荐指数
2
解决办法
2万
查看次数

标签 统计

spring ×2

h2 ×1

hsqldb ×1

java ×1

junit ×1

junit4 ×1

reset ×1

spring-boot ×1

spring-data-jpa ×1

transactions ×1