【问题标题】:Using JUnit categories vs simply organizing tests in separate classes使用 JUnit 类别与简单地在单独的类中组织测试
【发布时间】:2013-04-03 00:10:36
【问题描述】:

我有两种合乎逻辑的测试类别:普通功能单元测试(通过/失败)和仅用于指标/诊断的基准性能测试。

目前,我在一个类中拥有所有测试方法,称之为MyTests

public class MyTests 
{
    @Test
    public void testUnit1()
    {
        ...

        assertTrue(someBool);
    }

    @Test
    public void testUnit2()
    {
        ...

        assertFalse(someBool);
    }

    @Test
    @Category(PerformanceTest.class)
    public void bmrkPerfTest1()
    {
        ...
    }

    @Test
    @Category(PerformanceTest.class)
    public void bmrkPerfTest2()
    {
        ...
    }
}

然后我有一个UnitTestSuite 定义为

@RunWith(Categories.class)
@Categories.ExcludeCategory(PerformanceTest.class)
@SuiteClasses({ MyTests.class })
public class UnitTestSuite {} 

还有一个PerformanceTestSuite

@RunWith(Categories.class)
@Categories.IncludeCategory(PerformanceTest.class)
@SuiteClasses({ MyTests.class })
public class PerformanceTestSuite {} 

这样我就可以将Ant 中的单元测试与性能测试分开运行(我认为不需要包含 Ant 代码)。

这意味着我总共有四个类(MyTests、PerformanceTest、PerformanceTestSuite 和 UnitTestSuite)。我意识到我可以将所有单元测试放在一个类中,并将基准测试放在另一个类中并完成它,而不会增加类别和额外注释的额外复杂性。我在 Ant 中按类名调用测试,即不要运行包中的所有测试。

用注释按类别组织它是否有意义以及有什么原因?或者如果我只是在两个简单的测试类中重构它会更好吗?

【问题讨论】:

    标签: java junit junit4 categories


    【解决方案1】:

    关于是否将测试分为两类的问题:

    由于它们显然是非常不同类型的测试(单元测试和性能测试),因此无论如何我都会将它们放在不同的类中,仅出于这个原因。

    一些进一步的思考:

    我不认为使用@Category 注释是一个坏主意。在一个包含数十或数百个包含测试的类的更典型的项目中,我要做的是用@Category 注释测试classes(而不是方法),然后用use the ClassPathSuite library 来避免重复工作对测试进行分类。 (也许是run the tests by category using Ant。)

    如果您只有两个测试课程,那当然没关系。您可以保留类别和套件,或者将它们扔掉(正如您所说的那样,测试是在 Ant 中按类名运行的),如果有额外的类让您感到厌烦。我会保留它们,并转向上述场景,因为通常(在一个健康的项目中)随着时间的推移会积累更多的测试。 :-)

    【讨论】:

      【解决方案2】:

      如果你只有两个测试类,那可能没关系。我从事的项目有 50-60 节课。按名称列出它们会很累。您可以使用文件名模式,但我觉得注释更清晰。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-06-13
        • 2018-04-19
        • 2017-11-20
        • 2014-05-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多