Eclipse junit测试在同一个项目中

dav*_*rld 55 java eclipse junit

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

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

一般来说 - 测试代码应该从主项目文件夹中存储多远?如果我将测试代码存储在主项目中,然后将主项目导出为可运行的jar,它将使用它的测试代码,这是不理想的...

建议?

Hen*_*ing 68

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

您可以创建第二个源文件夹(如test),将测试类放入与测试类相同的包中.这也允许您测试包私有类,同时不会使主要源包充满测试类.

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

-sources
   -main
       -my.package
             -MyClass.java
   -test
       -my.package
             -MyClassTest.java
Run Code Online (Sandbox Code Playgroud)

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


Sea*_*oyd 21

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

project
    src
        main
             java      // source files
             resources // xml, properties etc
        test
             java      // source files
             resources // xml, properties etc
Run Code Online (Sandbox Code Playgroud)

在eclipse中,当您选择时new -> JUnit test case,只需将源文件夹更改为src/test/java并保留建议的包.

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


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

主类(在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;

}
Run Code Online (Sandbox Code Playgroud)

测试类(在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");
    }

}
Run Code Online (Sandbox Code Playgroud)


fas*_*ava 5

通常你有 -

/src/main/java   (for codes)

/src/test/java   (for tests)
Run Code Online (Sandbox Code Playgroud)