java - 这是测试构造函数的有效方法吗

标签 java testing junit constructor

我最近开始使用 OOP(在 Java 中)并且想知道以下代码是否可以使用 Junit 测试来验证构造函数是否已经过良好测试:

@Test
public void testConstructor() {
    MyClass c1 = new myClass("Text", 1);
    MyClass c2 = new myClass("Text", 1);
    assertEquals(c1,c2);
}

@Test
public void testConstructor2() {
    MyClass c1 = new myClass("Text", 1);
    MyClass c2 = new myClass("Text", 2);
    assertNotEquals(c1,c2);
}

虽然这对我来说似乎是一个有效的检查,但我仍然有点困惑,因为我发现的关于构造函数测试的大多数示例都使用 .get() 方法。

如有任何澄清,我们将不胜感激!

最佳答案

如果您的构造函数正在做非常微不足道的事情(比如只是设置字段),那么您不需要专门对其进行单元测试。你不会对你的代码有太多的信心(因为你可能有很多 - 它并没有做太多它可能出错的事情),并且实例化和使用对象的其他测试将固有地测试你没有做微不足道的事情错误。

如果您的构造函数正在做一些复杂的事情,您最好将该逻辑旋转到一个包私有(private)的静态方法中,然后对该方法本身进行单元测试。如果那不合理(例如,逻辑设置了多个字段),那么您的单元测试应该测试您期望的特定状态:

MyClass object = MyClass("Text", 1);
assertEquals("someComplicatedValue", object.getSomeField());

您不应该只测试对象是否相等,因为这不会告诉您字段是否正确,只是告诉您它们在给定相同输入的情况下是否相同。

关于java - 这是测试构造函数的有效方法吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48178045/

相关文章:

Java:如何有效地合并多个 xml 文件以创建新的 xml?

java - 在 Haxe 中一次运行多个进程的最佳方式是什么?

Java 不大于或等于 Char 类型的运算符

未创建 Angular 4 代码覆盖文件夹

java - 在单元测试中有一个 spring 上下文

java - 获取 java.sql.SQLException:JAVA 中 CallableStatement 上的索引::4 处缺少 IN 或 OUT 参数

firefox - Selenium 可以验证浏览器加载的 PDF 中的文本吗?

sql-server - 为 SSIS 2008 设置测试环境

java - Eclipse:Junit 我在下面的 junit 选项卡中看到此错误

java - 在 Spring Boot 中跳过 VPN DNS 可用性的集成测试