此单元测试是否必须与其测试的控制器位于同一个包中?

0 java unit-testing htmlunit

根据这个例子,它与它测试的控制器在同一个包中.

为什么这是必需品?

我认为将所有单元测试都放在一个testing包中会比较整洁- 这样做会有问题吗?

package com.example.web.controllers;

...imports...

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"/testApplicationContext.xml"})
public class HomeControllerSysTest extends AbstractJUnit4SpringContextTests {

    private static final Logger log = Logger.getLogger(
            HomeControllerSysTest.class.getName());
    private final LocalServiceTestHelper helper =
            new LocalServiceTestHelper(new LocalDatastoreServiceTestConfig());

    @Before
    public void setUp() {
        helper.setUp();
    }

    @After
    public void tearDown() {
        helper.tearDown();
    }

    @Test
    public void testHomeController() throws IOException {
        final String url = "http://localhost:8080/movie/test";

        final WebClient webClient = new WebClient();
        final HtmlPage page = webClient.getPage(url);
        assertEquals("The Page Title", page.getTitleText());

        // there are many different methods to query everything on your
        // page. Please refer to the HttpUnit homepage
        HtmlElement header = page.getElementsByTagName("h1").get(0);
        assertNotNull(header);

        String headerValue = header.getNodeValue();
        assertEquals(headerValue, "Hello World!");
    }
}
Run Code Online (Sandbox Code Playgroud)

Bra*_*ace 6

将它们保存在同一个包中允许测试包私有对象和方法.为了保持整洁,通过创建并行源树将测试放在"相同"包中.

src/
  com/
    example/
      MyClass.java

tests/
  com/
    example/
      MyClassTest.java
Run Code Online (Sandbox Code Playgroud)

两个源树都可以编译到相同的输出目录或以其他方式添加到类路径中,从而导致它们在JVM相关的包中.