命名约定JUnit后缀或前缀Test

testing下的类MyClass.java JUnittesting用例名称的替代方法:

TestMyClass.java MyClassTest.java 

http://moreunit.sourceforge.net似乎使用“testing”作为前缀默认,但我已经看到了这两个用途。 在eclipse中运行整个项目作为unit testing时,它们似乎都被认可,因为它是@Test分析的类中的注释。 我猜maven做同样的事情。

哪个是首选?

后缀的另一个说法 – 至less在英文中:

一个类通常代表一个名词 ,它是一个概念的模型。 其中一个testing的实例是“MyClasstesting”。 相反,一种方法可以模拟某种行为,如“testing[计算] [方法]”。

正因为如此,我总是使用testing类的后缀和testing方法的前缀:

 the MyClass test --> MyClassTest test the calculate method --> testCalculate() 

我更喜欢使用后缀 – 这意味着向下查看目录中的文件列表更简单:您不必从头脑上忽略前四个字母来获得有意义的内容。 (我假设你已经在生产代码的不同目录下进行testing了。)

这也意味着当你在Eclipse中使用Open Type(Ctrl-T)时,你最终会同时看到生产代码和它的testing…如果你没有看到一个testing类,这也是一个提醒: )

在JUnit 4之前,通常将testing类命名为SomethingTest,然后在匹配*Test.java所有类上运行JUnit。 这些天注释驱动JUnit 4,你只需要用@Test注释你的testing方法,并用它来完成。 你的testing类可能会在一个不同的目录结构下,而不是你的实际源(在src/ test类中的test/ ),所以现在的前缀/后缀在很大程度上是不相关的。

我更喜欢使用TestClassName语法。 当使用其他语法时,我无法确定哪些是testing,哪些是编辑器中的实际类,当我打开它们时。 不得不寻找名字中的最后四个字母是令人厌烦的,而且这些字母并不总是显示。

对于我来说,另一种语法每天都会导致文件之间出现错误的交换,这很耗时。

不要冒犯任何人,但我认为可以说“多单元”比JUnit更为人知,而JUnit几乎无处不在,并build立了后缀testing类“Test”的约定。

尽pipeJUnit4不再需要遵循类和方法命名约定(resp。“postfix Test”和“prefix test”),但我认为两者仍然是有用的。

想象一下,通过src / main / java /…/ MyClass.myMethod()testingsrc / test / java /…/ MyClass.myMethod()的恐怖感

有时候,与JUnit3的约定有所不同 – 我发现在它们做了什么(“createTestFactory()”)之后命名设置方法和注释它们“@Before”比通用的“setUp()”更清晰。

当需要执行多个不相关的设置操作时,这是特别有用的 – 它们可以在不同的方法中,每个方法都被标记为@Before。 这很好地传达了行动的独立性。

如果你一个人工作,我认为你对自己的testing感到满意是很重要的。 但是如果你在一个小组里,你最好坐下来修理一下。 我个人倾向于使用后缀作为类和前缀的方法,并尝试让我的组适应这个约定。

当我想将我的testing分成多个类时,我也使用MyClassTest_XXX。 这在testing一个大类时很有用,而且我希望这些testing在逻辑上是分组的。 (无法控制遗留代码,所以这种情况出现了。)然后,我有一些像KitchenSinkTest_ForArray,KitchSinkTest_ForCollection等

我build议MyClassTests

类应该是名词短语,所以常用的MyClassTest和不常见的MyClassTestsMyClassTestCaseMyClassTestFixture都可以工作。 从技术上讲,JUnittesting类的一个实例代表一个testing夹具 ,但TestFixture对我来说有点太冗长了。

我认为MyClassTests以最好的方式expression了意图,因为在一个类中通常有多个testing方法,每个testing方法代表单个testing(testing用例)。

我更喜欢后缀:TestCase。 这是符合: http : //xunitpatterns.com/Testcase%20Class.html