【问题标题】:JUnit Test Cases @Before and @After annotationsJUnit 测试用例 @Before 和 @After 注解
【发布时间】:2013-01-21 12:39:56
【问题描述】:

我们遵循以下做法为我们的方法编写 JUnit 测试。

  • 每个方法都有自己的类,其中包含该方法所需的所有测试。例如:类测试 {...}

  • @Before 将包含“实体”等方法的必备设置,因此当我们进行编辑时,我们不需要复制/粘贴代码来在每个方法级别添加实体。

现在我的问题是,我们是应该通过在@after 方法中编写代码来丢弃测试数据来删除我们输入的所有数据,还是就这样?

我知道我们可以使其可配置,但最佳做法是什么?保留或删除它。根据我的直觉,删除应该更好,就好像 db 中已经有一些重复数据一样 - 它可能会触发错误的真或假。

【问题讨论】:

    标签: java unit-testing junit


    【解决方案1】:

    作为最佳实践,我建议在每次测试之间清除数据存储,以确保每个测试与其他测试隔离。

    如果您想保持某些设置有效(例如来自@BeforeClass),这可以使用@After 方法完成。也可以在 @Before 方法中完成,例如通过为每个测试使用新实例覆盖变量,如果这样做,则不需要在测试后进行清理。

    要清理@BeforeClass 方法的设置,您应该使用@AfterClass,例如关闭数据库连接或类似的只需执行一次的操作。但这并不是所有类型的单元测试都需要的。

    【讨论】:

      【解决方案2】:

      这取决于您对“不要重复自己”原则的坚持程度。还值得记住的是,在每个@Test 和@AfterClass 都在所有@Test 运行之后调用了@After。有了这种粒度,删除重复项应该很简单,但仍然拆分那些只应在最后或每次测试后运行的任务。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-05-21
        • 1970-01-01
        • 2016-01-01
        • 2023-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多