有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java命名约定JUnit后缀或前缀测试

类正在测试MyClass。JAVA JUnit测试用例名称备选方案:

TestMyClass.java
MyClassTest.java

http://moreunit.sourceforge.net似乎使用“Test”作为默认前缀,但我已经看到了这两种用法。在eclipse中以单元测试的形式运行整个项目时,这两者似乎都能被识别,因为它是为@test解析的类中的注释。我猜maven也会这么做

哪个是首选


共 (6) 个答案

  1. # 1 楼答案

    在JUnit4之前,将测试类命名为SomethingTest,然后在所有匹配*Test.java的类中运行JUnit是很常见的。如今,注释驱动的JUnit4,您只需要用@Test注释您的测试方法并完成它。您的测试类可能会处于与实际源不同的目录结构下(源在src/测试类在test/),因此现在前缀/后缀基本上是不相关的

  2. # 2 楼答案

    后缀的另一个论点——至少在英语中是这样的:

    一个类通常代表一个名词,它是一个概念的模型。其中一个测试的实例是“MyClass测试”。相比之下,一种方法会模拟某种行为,比如“测试[计算[方法]”

    正因为如此,我总是在测试类中使用“后缀”,在测试方法中使用前缀:

    the MyClass test          --> MyClassTest
    test the calculate method --> testCalculate()
    
  3. # 3 楼答案

    我更喜欢使用后缀——这意味着向下查看目录中的文件列表更简单:你不必在心里忽略前四个字母,就能找到有意义的东西。(我假设测试已经位于与生产代码不同的目录中。)

    这还意味着,当您在Eclipse中使用Open Type(Ctrl-T)时,最终会同时看到生产代码及其测试。。。这也是一个提醒,如果你没有看到一个测试类:)

  4. # 4 楼答案

    我认为如果你独自工作,你对自己的测试感到舒适是很重要的。但如果你在一个小组里,你最好坐下来,找个固定的地方。我个人倾向于在类中使用后缀,在方法中使用前缀,并试图让我的小组适应这种惯例

  5. # 5 楼答案

    我更喜欢使用TestClassName语法。当使用另一种语法时,我很难在编辑器中识别哪个是测试,哪个是实际的类,而这两者都打开了。必须寻找名字中的最后四个字母是令人厌烦的,而且这些字母并不总是显示出来

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

  6. # 6 楼答案

    我不想冒犯任何人,但我认为公平地说,“moreunit”比JUnit更不为人所知,JUnit几乎无处不在,它建立了测试类后缀为“test”的惯例

    尽管JUnit4取消了遵循类和方法命名约定(分别是“后缀测试”和“前缀测试”)的必要性,但为了清晰起见,我认为两者仍然有用

    想象一下拥有src/test/java/…的恐怖吧/我的班级。myMethod()由src/main/java/测试/我的班级。myMethod()

    有时,与JUnit3约定不同是很有用的——我发现按照设置方法的功能(“createTestFactory()”)命名设置方法,并将它们注释为“@Before”,比一般的“setup()”清晰得多

    当需要执行几个不相关的设置操作时,这尤其有用——它们可以在单独的方法中,每个方法都标记为@Before。这很好地传达了操作的独立性