how to test for an thrown IllegalArgumentException
本问题已经有最佳答案,请猛点这里访问。
我正在大学开展一个项目,我将创建自己的对象,以及私有数据,方法等。这不是一个带有用户界面的完整工作系统; 它只是创建类的机会,然后实例化并测试它们。
问题是我正在尝试创建一个测试方法,该方法在名为DinetteStore的构造函数中测试抛出的IllegalArgumentException:
1 2 3 4 5 6 7 8 9 10 11 | 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; } |
此处列出了测试类中的代码:
1 2 3 4 5 | @Test (expected = IllegalArgumentException.class) public void testIllegalArgumentChair() { int tableInventory = -1 || int leafInventory = -1 || chairInventory = -1; } |
我遇到了一个问题,我得到一个.class预期错误或非法启动表达错误。 我正在使用的IDE是BlueJ 4.1.0这里有什么我缺少语法的吗? 任何帮助肯定会受到赞赏。
您没有实例化将抛出
1 2 3 4 | @Test (expected = IllegalArgumentException.class) public void testIllegalArgumentChair() { DinetteStore willFail = new DinetteStore(-1, -1, -1); } |
您的测试类格式奇怪。 您正尝试使用非法参数实例化
1 2 3 4 5 6 7 8 9 | @Test (expected = IllegalArgumentException.class) public void testIllegalArgumentChair() { int tableInventory = -1; int leafInventory = -1; int chairInventory = -1; DinetteStore creationWillFail = new DinetteStore(tableInventory, leafInventory, chairInventory); } |
1 2 3 4 | @Test (expected = IllegalArgumentException.class) public void testIllegalArgumentChair() { DinetteStore d = new DinetteStore(-1,-1,-1); } |
在测试中你必须调用抛出异常的方法,否则你将永远不会得到预期的异常