gpt4 book ai didi

java - 为什么我的代码没有通过 IllegalArgumentException 的 JUnit 测试?

转载 作者:行者123 更新时间:2023-11-29 09:26:32 25 4
gpt4 key购买 nike

我被要求实现一个名为 setLevel 的方法。我还需要在 MIN 和 MAX 值之间抛出一个 IllegalArgumentException(),这是我从之前名为 Hounsfield 的类(class)中​​获取的。这已连接到 JUnit 测试仪,除了我在下面发布的测试之外,我通过了大部分测试,但我不明白为什么。第一个代码块是我的,第二个代码块是失败的 JUnit 测试的代码。具体来说,失败的行是“fail(String.format("new HounsfieldWindow(%s, 10) should throw an exception", level))”。

编辑:我也将所有代码添加到 setLevel 方法中。

public class HounsfieldWindow {
private int level, width;

public HounsfieldWindow(int level, int width) {
this.level = level;
this.width = width;
}

public HounsfieldWindow() {
this(0, 400);
}

public int getLevel() {
return level;
}

public int setLevel(int level) {
if (level < Hounsfield.MIN_VALUE || level > Hounsfield.MAX_VALUE) {
throw new IllegalArgumentException();
}
int data = this.level;
this.level = level;
return data;
}


@Test
public void test04_ctorThrowsOnBadLevel() {
final int[] BAD_LEVELS = { -10000, -1025, 3072, 9999 };
for (int level : BAD_LEVELS) {
try {
new HounsfieldWindow(level, 10);
fail(String.format("new HounsfieldWindow(%s, 10) should throw an exception", level));
} catch (IllegalArgumentException x) {
// ok
}
}
}

最佳答案

您的单元测试实际上并未测试您声称的方法。看起来您的构造函数实际上应该调用 set level 方法。就目前而言,构造函数可以在 set level 方法中定义的可接受参数之外设置级别,这似乎不是您想要的。

对您的构造函数的以下更改应该可以修复您的测试。

public HounsfieldWindow(int level, int width) {
setLevel(level);
this.width = width;
}

关于java - 为什么我的代码没有通过 IllegalArgumentException 的 JUnit 测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57959572/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com