java-命名约定JUnit后缀或前缀Tes
被测类MyClass.javaJUnit测试用例名称的替代方案:
TestMyClass.java
MyClassTest.java
[http://moreunit.sourceforge.net]似乎使用“ Test”作为前缀默认值,但是我看到了这两种用法。 当将整个项目作为eclipse中的单元测试运行时,这两者似乎都可以识别,因为它是为@Test解析的类中的注释。 我想Maven也会做同样的事情。
哪个是首选?
9个解决方案
85 votes
后缀的另一个参数-至少在英语中:
一个类通常代表一个名词,它是一个概念的模型。 您的测试之一的实例将是“ MyClass测试”。 相反,一种方法将对某种动作建模,例如“测试[计算] [方法]”。
因此,我将始终对测试类使用“后缀”,并对测试方法使用前缀:
the MyClass test --> MyClassTest
test the calculate method --> testCalculate()
Andreas_D answered 2020-01-22T23:41:21Z
52 votes
我更喜欢使用后缀-这意味着在目录中查找文件列表更为简单:您不必费心地忽略前四个字母即可获得有意义的内容。 (我假设您已经将测试放在与生产代码不同的目录中。)
这也意味着,当您在Eclipse中使用Open Type(Ctrl-T)时,您最终会同时看到生产代码及其测试……这也提醒您是否没有看到测试类: )
Jon Skeet answered 2020-01-22T23:41:46Z
9 votes
在JUnit 4之前,通常先给测试类命名为SomethingTest,然后在与*Test.java匹配的所有类上运行JUnit。这些天来,注释驱动的JUnit 4只需用@Test注释测试方法即可完成。 您的测试类可能与实际源(在src/中的源在test/中的测试类)位于不同的目录结构下,因此这些天的前缀/后缀在很大程度上无关紧要。
krock answered 2020-01-22T23:42:07Z
5 votes
不冒犯任何人,但是我认为可以公平地说,“ moreunit”比JUnit少为人所共知,后者几乎无处不在,并建立了后缀测试类“ Test”的约定。
尽管JUnit4消除了同时遵循类和方法命名约定(分别是“ postfix Test”和“ prefix test”)的必要性,但我认为两者对于保持清晰性仍然很有用。
想象一下让src / main / java /.../ MyClass.myMethod()测试src / test / java /.../ MyClass.myMethod()的恐怖...
有时,偏离JUnit3约定很有用-我发现在设置方法之后命名设置方法(“ createTestFactory()”),并在其命名为“ @Before”时,比通用的“ setUp()”要清晰得多。
当需要执行几个不相关的设置操作时,这特别有用-它们可以处于单独的方法中,每个方法都标记为@Before。 这很好地传达了动作的独立性。
Morten Lauritsen Khodabocus answered 2020-01-22T23:42:46Z
5 votes
我更喜欢使用TestClassName语法。 当使用其他语法时,我在打开两个语法时都很难确定哪个是测试,哪个是编辑器中的实际类。 必须寻找名称中的最后四个字母很麻烦,而且这些字母也不总是显示出来。
对我来说,其他语法会导致每天在文件之间发生几次错误的交换,这很费时间。
Pablo Jomer answered 2020-01-22T23:43:11Z
2 votes
我认为,如果您一个人工作,对测试感到满意很重要。 但是,如果您在一个小组中,则最好坐下来并固定好东西。 我个人倾向于将后缀用于类,将前缀用于方法,并尝试使我的组适应该约定。
eytanfb answered 2020-01-22T23:43:31Z
1 votes
当我想将测试分为多个类时,也使用MyClassTest_XXX。 这在测试大型类时很有用,并且我希望对测试进行逻辑分组。 (无法控制旧代码,因此确实出现了这种情况。)然后,我得到了类似KitchenSinkTest_ForArray,KitchSinkTest_ForCollection等的信息。
Jeanne Boyarsky answered 2020-01-22T23:43:52Z
0 votes
我建议MyClassTests。
类应为名词短语,因此常用的MyClassTests和不太常见的MyClassTests或MyClassTestCase或MyClassTestFixture都可以使用。 从技术上讲,JUnit测试类的实例代表测试夹具,但是TestFixture对我来说太冗长了。
我认为MyClassTests以最佳方式传达了意图,因为类中通常有多个测试方法,每个方法代表一个测试(测试用例)。
DKroot answered 2020-01-22T23:44:21Z
-2 votes
我更喜欢后缀:TestCase。 这与以下内容一致:[http://xunitpatterns.com/Testcase%20Class.html]
Ray Tayek answered 2020-01-22T23:44:41Z