【问题标题】:How to test different "tables input" in Java?如何在 Java 中测试不同的“表格输入”?
【发布时间】:2020-09-05 09:18:40
【问题描述】:

我有一个 Java 程序,它从 2 个表中检索数据,并在快速处理后将结果数据存储在另外 2 个表中。

因此,我需要测试我的代码的全局行为,所以我想到的第一个想法是创建很多小的输入表,有 2 或 3 行(仅用于测试)。然后在所有这些测试表中执行代码并与预期结果(也是预先创建的小表)进行比较。 问题是我不知道如何继续

【问题讨论】:

    标签: java mysql junit spring-data-jpa mocking


    【解决方案1】:

    您可以使用 h2 数据库来特意运行内存数据库进行测试;这是关于该主题的简短教程 - https://www.baeldung.com/spring-testing-separate-data-source

    【讨论】:

    • 所以我的测试类中的每个自动连接的类都将自动连接到 H2 数据库?我的意思是在我的测试类中我自动连接了一个服务层,它将连接到 H2?
    • 这在很大程度上取决于您的服务层的结构,但如果它有 jdbcTempater 或 jpa 存储库,那么答案是肯定的,连接将可用。
    【解决方案2】:

    您最初的想法会使事情变得过于复杂。我只需创建带有 _test 后缀的表的精确副本,并对测试表执行与对真实表执行的操作相同的操作。操作完成后,将您的测试表内容与您的期望进行比较,然后将其清空。

    假设您的表分别称为 s1、s2 和 d1、d2,让我们为您的测试创建 s1_test、s2_test、d1_test 和 d2_test。然后执行以下算法:

    for tc of testcases
        initialize s1_test, s2_test
        perform tc.operations(s1_test, s2_test, d1_test, d2_test)
        compare contents of d1_test and d2_test with tc.expectations
        clear d1_test, d2_test
    end for
    

    【讨论】:

    • 什么是“测试用例”?
    • @recoba78 testcases 是您的测试用例的集合。您不一定要执行单个测试。您可能有几个可能的输入要测试。在我的伪代码中,测试用例象征着你要测试的一切。例如,您可能希望在一种情况下测试字段的空值,在另一种情况下测试文本。
    • s1_test 和 s2 _test 从一个测试用例到另一个不同?
    • @recoba78 它们是同一张表,但可以重复使用。如果有必要,您当然可以定义单独的表,例如架构差异。但是,如果您 1. 进行实际测试 2. 检查结果 3. 清除表格,那么您可以在下一次测试中重复使用它们。
    • @recoba78 是什么阻止您在每次验证结果并为新测试填充新数据后从测试表中删除每一行?在我看来,对于每个测试用例 1. 你用一组特定的输入来水合你的测试表 2. 你进行实际测试 3. 你检查结果并将它们存储在某个地方 4. 你清除你的测试表以启用下一个测试用例,这将有所不同。您需要将表的数量保持在仍然必要的最低限度,因为如果过于复杂,就会遇到问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-19
    • 2014-03-23
    • 2010-09-13
    • 1970-01-01
    • 2021-02-26
    • 1970-01-01
    相关资源
    最近更新 更多