java - 如何测试抛出的 IllegalArgumentException

标签 java unit-testing junit illegalargumentexception

<分区>

我在大学里做一个项目,我要创建自己的对象,以及私有(private)数据、方法等。这不是一个带有用户界面的完整工作系统;这只是创建类、然后实例化和测试它们的机会。

问题是我正在尝试创建一个测试方法,该方法在名为 DinetteStore 的构造函数中测试抛出的 IllegalArgumentException:

public DinetteStore(int tableInventory, int chairInventory, int leafInventory){
       if (tableInventory < 0 || leafInventory < 0 || chairInventory < 0){
           throw new IllegalArgumentException ("Inventory must not be out of range of required order");
        }

       this.tableInventory = tableInventory;
       this.chairInventory = chairInventory;
       this.leafInventory = leafInventory;
       this.totalSales = 0;
       this.numSales = 0;
   }

测试类中的代码列在这里:

@Test (expected = IllegalArgumentException.class) 
    public void testIllegalArgumentChair() {
        int tableInventory = -1 || int leafInventory = -1 || chairInventory = -1;

    }

我遇到了一个问题,我遇到了 .class 预期错误或表达式错误的非法开始。我正在使用的 IDE 是 BlueJ 4.1.0 有没有我在语法方面缺少的东西?任何帮助都将不胜感激。

最佳答案

您没有实例化将引发异常。而且你的语法不正确,应该是这样的:

@Test (expected = IllegalArgumentException.class) 
public void testIllegalArgumentChair() {
        DinetteStore  willFail = new DinetteStore(-1, -1, -1);
}

关于java - 如何测试抛出的 IllegalArgumentException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45225119/

相关文章:

java - 以编程方式更改标题摘要

java - 当 Java 类是 Serializable 的实例时

javascript - 如何导入 `isOneline`函数?

java - 在 Play Framework 2.0 中测试异步 Web 服务调用

java - 跨多个线程的可变静态变量

java - 从 Scala 程序生成 PGP 签名

c++ - 如何对嵌入式代码进行单元测试?

python - Auth0获取access_token用于Python中的单元测试

java - 当使用参数化运行器运行时,如何让 JUnit 在运行时忽略特定的测试用例?

java - ResourceAccessException 内 SocketTimeout 异常的 Junit 代码覆盖率