在每个带有 http 调用的 junit 测试用例之后进行数据库清理

Posted

技术标签:

【中文标题】在每个带有 http 调用的 junit 测试用例之后进行数据库清理【英文标题】:Database Cleanup after every junit test cases with http calls 【发布时间】:2015-05-14 10:24:40 【问题描述】:

我正在使用带有 spring 的 junit4 来测试我的其余 Web 服务。 为此,我在内存数据库中使用 HSQL。

为了在每个测试用例之后清理记录,我将从表中删除所有记录。

但我只想删除插入的记录。 我在两个地方向数据库添加数据:

    在 Junit 测试用例中。

    在其余服务中。

我正在进行 http 调用 来测试服务。另外,我在休息服务中使用相同的内存数据库。

请帮助我在每个测试用例之后仅删除插入的记录。

已编辑:我担心的是删除在 http 调用中插入的记录以调用其余服务。跟踪这些记录真的很难。它们是我实际代码的一部分。

【问题讨论】:

【参考方案1】:

您可以使用@Before@After 方法来执行此活动。

注意@Before会在每次测试之前执行,@After会在每次测试之后执行。所以@Before你应该插入记录,现在你知道插入了哪些记录,只删除@987654326中的记录@

如果你想为每个测试添加几个不同的记录,那么使用 try .... finally

如下图

class Test
     @Before
        public void setUp()
             // insert x Records 
        


      @After
        public void tearDown()
             // delete x Records 
        


         @Test
                public void someTest() throws Exception 
              //  ... insert few records 
                try
                doSomething();
              finally
            //  deleteRecordsInserted for this test.
             

            


【讨论】:

感谢您的回答。我想到了这个。我担心的是删除在对休息服务的 http 调用中插入的记录。跟踪这些记录真的很难。它们是我实际代码的一部分。

以上是关于在每个带有 http 调用的 junit 测试用例之后进行数据库清理的主要内容,如果未能解决你的问题,请参考以下文章

JUnit入门笔记

在 Junit5 中记录每个测试用例的执行时间的注释

PageObject在UI自动化测试中的应用--Junit版

如何使 JUnit 测试用例按顺序运行?

跨junit测试类重用spring应用程序上下文

junit测试用例