java - 单元测试中的初始化

标签 java unit-testing junit

我是 Java 新手,正在使用 JUnit 进行单元测试。我很好奇,如果只是为了避免重复代码,在测试类开始时仅初始化每个特定测试副中的对象一次是否是不好的做法。例如:

public class MyTest {
    @Test
    public void defaultObj() {
        Obj d = new Obj();
        String name = "";
        assertEquals(name, d.getName());
    }

对比

public class MyTest {
    Obj d = new Obj();
    String name = "";    

    @Test
    public void defaultObj() {
        assertEquals(name, d.getName());
    }

同样,假设我有多个单元测试,并且我会在每个单元测试中调用 Obj d = new Obj();。我感觉后者更合适。然而,我认为前者更明确,因为每个 intiailizaton 都是本地化的(对吗?),并且如果我有多个 Obj 构造函数,我一开始的初始化将开始堆叠。

这里有最佳实践习惯吗?或者可以接受吗?

最佳答案

您能做的最好的事情就是在类级别声明要测试的对象(在本例中为 Obj)。然后,调用 @Before 方法内的构造函数。

最好在方法内声明 name 属性,因为我认为它不会在每个方法中使用。

public class MyTest {
  private Obj d;

  @Before
  public void defaultObj() {
    d = new Obj();
  }

  @Test
  public void defaultObj() {
    String name = "";
    assertEquals(name, d.getName());
  }
}

关于java - 单元测试中的初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46881371/

相关文章:

java - 使用扫描仪和字符串标记器读取文件并检索邻接列表

java - 尝试每 5 秒执行一次操作

javascript - 使用 QUnit 测试 Angular.js

javascript - 如何在主干或 ember 或任何 javascript MVC 框架中编写简单 jQuery AJAX 调用的等效项,以便我可以对其进行单元测试

java - Junits 中的 NullPointerException

java - 如何在 JUnit 中测试 void 方法

java - Spring JPA 存储库访问对象集合中的字段

java - 非最终字段的同步

java - Spring Boot 单元测试 - 测试失败提示没有定义 "entityManagerFactory"bean

java - Jenkins Junit 中的 WireMock - BindException : Address already in use