代码之家  ›  专栏  ›  技术社区  ›  David

同一项目中的Eclipse JUnit测试

  •  54
  • David  · 技术社区  · 16 年前

    这是一个相对开放的问题。如果我在Eclipse中的一个项目中构建了一个应用程序,然后想要测试这个项目,我应该在同一个项目中创建JUnit代码还是创建一个单独的项目。例如。。。

    ShopSystem 也许我的主要项目的名称-我应该创建一个名为say的项目吗? ShopSystemTest ?

    一般来说-测试代码应该存储在远离主项目文件夹的地方吗?如果我将测试代码存储在主项目中,然后将主项目导出为一个可运行的JAR,那么它将带上测试代码,这并不理想…

    建议?

    4 回复  |  直到 12 年前
        1
  •  67
  •   Henning    16 年前

    虽然没有唯一正确的方法,但通常的方法是将单元测试保存在同一个项目中。

    您可以创建第二个源文件夹(如 test ,将测试类放入与被测试类相同的包中。这还允许您测试包私有类,而不使用测试类淹没您的主源包。

    您的源文件夹/包结构如下所示:

    -sources
       -main
           -my.package
                 -MyClass.java
       -test
           -my.package
                 -MyClassTest.java
    

    然后,您可以将构建配置为不包括 测试 包装罐时的源文件夹。

        2
  •  20
  •   Sean Patrick Floyd    16 年前

    我非常喜欢Maven约定:在同一个项目中,有一个单独的主和测试源树,部署了主代码,测试代码没有。包结构可以是(但不必是)相同的。

    project
        src
            main
                 java      // source files
                 resources // xml, properties etc
            test
                 java      // source files
                 resources // xml, properties etc
    

    在Eclipse中,当您选择 new -> JUnit test case 您只需将源文件夹更改为SRC/Test/Java,并将建议的包原样保留即可。

    (保留在同一个包中的好处之一是可以访问受保护的和包范围的成员,尽管这不是“适当的”单元测试行为)


    更新: 下面是一些代码来说明我的最后一点:

    主类(在SRC/Ma/Java中):

    package com.test;
    public class Foo{
    
        static class Phleem{
            public Phleem(final String stupidParameter){
            }
        }
    
        String bar;
        protected String baz;
        protected Object thingy;
    
    }
    

    测试类(在SRC/Test/Java中):

    package com.test;
    import org.junit.Test;
    
    public class FooTest{
    
        @Test
        public void testFoo(){
            final Foo foo = new Foo();
            foo.bar = "I can access default-scoped members";
            foo.baz = "And protected members, too";
            foo.thingy = new Foo.Phleem("And I can access default-scoped classes");
        }
    
    }
    
        3
  •  5
  •   fastcodejava    16 年前

    通常你有-

    /src/main/java   (for codes)
    
    /src/test/java   (for tests)
    
        4
  •  4
  •   Riduidel    16 年前

    考虑Maven方法:在Maven项目中,Soruce是以这种方式组织的

    src
     |--main
     |     |--java
     |--test
           |--java
    

    您的源代码进入SRC/MeN/Java,您的JUnit测试代码进入SRC/Test/爪哇,它们都是源文件夹(因此,您可以将Java单元代码与Java代码放在同一个包中,但在不同的源文件夹中)。

    有趣的是,对于通常的编码,您的JUnit类是在代码包中,但是在JAR创建上,您可以只从SRC/Ma/Java来上课,而不发布测试。