有 Java 编程相关的问题?

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

同一项目中的JavaEclipseJUnit测试

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

ShopSystem可能是我的主要项目的名称-我应该创建一个名为ShopSystemTest的项目吗

一般来说,测试代码应该存储在距离主项目文件夹多远的地方?如果我将测试代码存储在主项目中,然后将主项目导出为可运行的jar,它将携带测试代码,这并不理想

建议


共 (4) 个答案

  1. # 1 楼答案

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

    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,并保持建议的包不变

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


    更新:这里有一些代码来说明我的最后一点:

    Main类(在src/Main/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");
        }
    
    }
    
  2. # 2 楼答案

    考虑Maven方法:在Maven项目中,SUCUCES按这种方式组织

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

    源代码放在src/main/java中,junit测试代码放在src/test/java中,它们都是源文件夹(因此,您可以将junit代码放在与java代码相同的包中,但放在不同的源文件夹中)

    有趣的是,对于通常的编码,您的jUnit类位于代码包中,但是在创建jar时,您可以只获取来自src/main/java的类,而不发布测试

  3. # 3 楼答案

    通常,您有-

    /src/main/java   (for codes)
    
    /src/test/java   (for tests)
    
  4. # 4 楼答案

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

    您可以创建第二个源文件夹(如test),将测试类放在与被测试类相同的包中。这还允许您测试包私有类,同时不让测试类充斥主源包

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

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

    然后,您可以将构建配置为在打包JAR时不包含test源文件夹