Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 该单元测试是否必须与它测试的控制器在同一个包中?_Java_Unit Testing_Htmlunit - Fatal编程技术网

Java 该单元测试是否必须与它测试的控制器在同一个包中?

Java 该单元测试是否必须与它测试的控制器在同一个包中?,java,unit-testing,htmlunit,Java,Unit Testing,Htmlunit,根据,它和它测试的控制器放在同一个包中 为什么这是必要的 我认为将我的所有单元测试放在一个测试包中会更整洁——这样做会有问题吗 package com.example.web.controllers; ...imports... @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {"/testApplicationContext.xml"}) public class HomeControlle

根据,它和它测试的控制器放在同一个包中

为什么这是必要的

我认为将我的所有单元测试放在一个测试包中会更整洁——这样做会有问题吗

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!");
    }
}

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

src/
  com/
    example/
      MyClass.java

tests/
  com/
    example/
      MyClassTest.java

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

将它们保持在相同包中可以测试包私有对象和方法。 为了保持整洁,通过创建并行源代码树将测试放在同一个包中

src/
  com/
    example/
      MyClass.java

tests/
  com/
    example/
      MyClassTest.java

这两个源代码树都可以编译到同一个输出目录中,或者以其他方式添加到类路径中,这样就JVM而言,它们就在同一个包中。

必须这样吗?没有

应该是吗?这是惯例

当不适合生产时,具有适当属性的Ant任务可以删除所有测试类,无论您如何组织项目。因此,物理位置在这方面并不重要

对于正常的“源代码”不一致,最好让测试用例与相关的源代码非常接近,这样您就可以更容易地发布源代码

Java具有类似于私有和公共访问的包级访问,但我认为这种访问并不经常使用


重要的是你有单元测试。其余的在我看来并不重要。

一定要这样吗?没有

应该是吗?这是惯例

当不适合生产时,具有适当属性的Ant任务可以删除所有测试类,无论您如何组织项目。因此,物理位置在这方面并不重要

对于正常的“源代码”不一致,最好让测试用例与相关的源代码非常接近,这样您就可以更容易地发布源代码

Java具有类似于私有和公共访问的包级访问,但我认为这种访问并不经常使用


重要的是你有单元测试。其余的就不那么重要了。

单元测试可以在任何包中进行。本质上,它们只是用于测试被测试类行为的独立类

这里最重要的问题是JUnit测试类的位置对于它们所属的项目来说是一个常量。也就是说,它们总是在同一个包中,或者在名为test的子包中,或者在一个单独的包中

我倾向于将JUnit测试类放在一个单独的包中,该包通过将顶级名称替换为“test”来定义,因此org.util.strings.StingUtil将有一个名为test.util.StringUtilTest的JUnit测试类


通过这种方式,很容易找到测试类,并且可以很容易地将它们分为library.jar和它们的test.jar。此外,您也不会冒JUnit测试无意中使用包级访问被测试类的风险;测试类必须使用与世界其他部分相同的接口。在我看来,专门用于测试支持的包级钩子是有害的,因此最好通过将测试放在其他地方来确保它们没有用处。

单元测试可以在任何包中。本质上,它们只是用于测试被测试类行为的独立类

这里最重要的问题是JUnit测试类的位置对于它们所属的项目来说是一个常量。也就是说,它们总是在同一个包中,或者在名为test的子包中,或者在一个单独的包中

我倾向于将JUnit测试类放在一个单独的包中,该包通过将顶级名称替换为“test”来定义,因此org.util.strings.StingUtil将有一个名为test.util.StringUtilTest的JUnit测试类


通过这种方式,很容易找到测试类,并且可以很容易地将它们分为library.jar和它们的test.jar。此外,您也不会冒JUnit测试无意中使用包级访问被测试类的风险;测试类必须使用与世界其他部分相同的接口。在我看来,专门用于测试支持的包级钩子是有害的,因此最好通过将测试放在别处来确保它们没有用处。

这不是单元测试,这是功能/验收测试,不是单元测试,这是一个功能/验收测试,那么测试您想成为包级别的东西呢?包级别的访问是实现的一个受限部分,就像受保护的一样。如果在测试中需要包级别的访问,那么可以在JUnit testmethod中使用匿名子类来提供访问权限。+1用于重命名包中的顶级名称。我自己只是junit或htmlunit,这取决于测试基于哪种工具。那么测试您需要的东西呢
想要成为包级别吗?包级别访问是实现的受限部分,如受保护。如果在测试中需要包级别的访问,那么可以在JUnit testmethod中使用匿名子类来提供访问权限。+1用于重命名包中的顶级名称。我自己只是junit或htmlunit,这取决于测试基于哪个工具。