JUnit4测试问题:构造函数未正确初始化属性致测试失败
问题:Sterling类构造函数初始化与addToValue方法逻辑错误
问题现象
- Sterling类构造函数接收
initialValue参数,但未正确初始化成员变量value - 调用
addToValue方法时,仅返回valueChange参数的值,而非初始值与变更值的和 - JUnit4测试预期结果为150,实际仅得到50
原代码示例
Sterling类代码
public class Sterling { private int value; public Sterling(int initialValue) { // 错误:未将initialValue赋值给value } public int addToValue(int valueChange) { // 错误:仅返回valueChange,未计算总和 return valueChange; } }
JUnit4测试代码
import org.junit.Test; import static org.junit.Assert.assertEquals; public class SterlingTest { @Test public void testAddToValue() { Sterling sterling = new Sterling(100); int result = sterling.addToValue(50); assertEquals(150, result); // 预期150,实际得到50 } }
修复方案
- 修复构造函数:在构造函数中将传入的
initialValue赋值给成员变量value - 修复addToValue方法:计算
value与valueChange的和,返回结果的同时更新成员变量value(若需保留对象状态)
修复后的代码
修复后的Sterling类
public class Sterling { private int value; public Sterling(int initialValue) { this.value = initialValue; } public int addToValue(int valueChange) { this.value += valueChange; return this.value; } }
验证测试
重新运行JUnit4测试,testAddToValue方法会得到预期的150,测试通过。
内容的提问来源于stack exchange,提问作者rulerH
相关产品推荐
相关产品推荐

