【问题标题】:How to test a constructor will throw an illegal state exception? [duplicate]如何测试构造函数会抛出非法状态异常? [复制]
【发布时间】:2019-07-22 17:46:38
【问题描述】:

我有一个带有私有构造函数的实用程序类,它抛出一个非法状态异常,我想测试它是否这样做。

我尝试了一个实现构造函数的测试,但由于构造函数是私有的,因此无法在类外部访问。那么测试构造函数就没有意义了吗?

来自班级

 private UtilityClass(){
        throw new IllegalStateException("Utility Class");
    }

来自测试类

private UtilityClass = utilityClass;
    @Test(expected = IllegalStateException.class)
    public void constructorTest(){
        utilityClass = new UtilityClass();
    }

【问题讨论】:

  • 你有什么静态方法可以从外部获取实例吗?
  • "那么测试构造函数就没有意义了吗?"是的
  • 您将其设为私有,以便没有人可以访问它,并且您可能在方法或构造函数之一中使用它。所以只需测试应该没问题的方法
  • 我同意。你应该直接测试一个方法——如果它们可以被public访问。您的构造函数是 private,因此如果它被 public 方法使用 - 那么您应该测试这些方法以检测异常。
  • 更改代码以使用接口而不是类。然后没有更多的构造函数,没有什么可测试的。

标签: java unit-testing testing junit constructor


【解决方案1】:

您可以通过定义公共构造函数然后编写适当的测试代码来测试构造函数是否引发异常。如果你有私有构造函数(或私有方法),你不能直接测试它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-11
    • 2016-06-16
    相关资源
    最近更新 更多