gpt4 book ai didi

java - 如何使用JUnit4测试void方法?

转载 作者:行者123 更新时间:2023-12-01 19:29:28 25 4
gpt4 key购买 nike

所以我的代码看起来是这样的(我知道我没有写减法规则,但忽略它): 该方法必须如此声明(它是一个赋值),并且我还实现了一个接口(interface)

public class RomanNumber implements Number {
public String roman;

public RomanNumber(String roman) {

this.roman = roman;
}

public void fromIntValue(int value) {
String roman ="";
if (value < 0) {
roman = " ";
}
while (value >= 1000) {
roman += "M";
value -= 1000;
}
while (value >= 500) {
roman += "D";
value -= 500;
}
while (value >= 100) {
roman += "C";
value -= 100;
}
while (value >= 50) {
roman += "L";
value -= 50;
}
while (value >= 10) {
roman += "X";
value -= 10;
}
while (value >= 5) {
roman += "V";
value -= 5;
}
while (value >= 1) {
roman += "I";
value -= 1;
}
this.roman=roman;
}

我的 JUnit 测试:

public void fromIntValue() {
RomanNumber rom = new RomanNumber("MMMCCLV");
rom.fromIntValue(3255);
Assert.assertEquals({"MMCCLV"},rom.fromIntValue(3255));

}

以及我的错误消息:

Error:(26, 54) java: 'void' type not allowed here

最佳答案

单元测试验证公共(public)可观察行为,即返回值(如果有)或与依赖项的通信

您的代码应该更改对象的内部状态
访问内部状态(存储翻译后的数字的变量)将违反封装/信息隐藏,这是面向对象编程最重要的原则之一。

毕竟,对象状态的更改应该会导致对象公共(public)可观察行为的更改。在您的情况下,应该有一个 getter 方法来公开内部存储的罗马数字。因此,您的测试应该使用此 getter 来检索状态。

关于java - 如何使用JUnit4测试void方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59274531/

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