我最近开始使用 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/