代码之家  ›  专栏  ›  技术社区  ›  Craig P. Motlin

找到未包含在任何套件中的JUnit 3测试吗?

  •  0
  • Craig P. Motlin  · 技术社区  · 16 年前

    如果有人编写了一个新的单元测试,但他们忘记将其添加到套件中,那么即使后来有人破坏了测试,连续构建也会继续顺利通过。有没有办法发现套件中不包含的JUnit测试?

    编辑
    我知道我可以转到JUnit 4,但问题是,如何找到缺少@Test注释的测试?

    4 回复  |  直到 16 年前
        1
  •  1
  •   user23313    16 年前

    搬到junit4?

        2
  •  1
  •   Stephen C    16 年前

    我会这样做:

    1. 结合使用 find grep 提取假定的测试类名列表;例如 格雷普 对于包含 extend TestCase .

    2. 结合使用 发现 格雷普 在测试报告上提取实际运行的测试类的列表。

    3. 对这两个列表进行排序,并使用 diff .

    存在误报和漏报的风险;e、 g.测试不直接扩展的类 TestCase 可能会漏网。但这种方法会给你一个快速的“第一步”答案。

        3
  •  1
  •   topchef    16 年前

    使用 TestSuite.tests() 您可以生成测试套件中包含的测试列表(递归)( 清单1 )使用Java反射,您可以生成所有测试的列表(来自扩展的类) TestCase ) ( 清单2 ).

    然后减去 清单1 从…起 清单2 生成不包含在任何套件中的测试列表。

    运行这个Java程序时,类路径应该包含所有测试类。

        4
  •  1
  •   Community Mohan Dere    9 年前

    我建议不要手动创建测试套件。相反,确保构建自动运行“tests”目录下的所有测试。Ant支持使用<junit>要素

    您还可以创建一个套件,通过查找扩展TestCase的所有非抽象类来查找要运行的测试。你可以把自己的反光套装 Reflections 或者四处搜索免费的实现(参见 How do I programmatically run all the JUnit tests in my Java application? )