BlueJ中Java单元测试:如何验证返回对象与null值?
用BlueJ的JUnit测试ItemClass方法的两种场景
一、验证返回的是预先创建的特定Feedback实例
要判断两个对象是否为同一个实例,不能用assertEquals(它默认调用equals方法,判断内容相等),得用JUnit的assertSame方法,它专门校验对象引用是否一致。
具体实现步骤与代码示例:
- 预先创建目标Feedback实例并绑定到测试的ItemClass对象;
- 调用ItemClass的目标方法获取返回对象;
- 用
assertSame断言两个引用指向同一个实例。
import org.junit.Test; import static org.junit.Assert.*; public class ItemClassTest { @Test public void testGetFeedbackReturnsSpecificInstance() { // 1. 准备预期的Feedback实例 Feedback expectedFeedback = new Feedback("测试评价"); ItemClass testItem = new ItemClass(); // 假设ItemClass有方法可预先绑定实例,比如setFeedback testItem.setFeedback(expectedFeedback); // 2. 调用要测试的方法 Feedback actualFeedback = testItem.getFeedback(); // 3. 断言是同一个实例 assertSame("返回的不是预先创建的Feedback实例", expectedFeedback, actualFeedback); } }
二、验证无Feedback时返回null
直接用JUnit的assertNull方法即可,它专门用于校验对象是否为null,比assertEquals(null, 对象)更直观。
代码示例:
import org.junit.Test; import static org.junit.Assert.*; public class ItemClassTest { @Test public void testGetFeedbackReturnsNullWhenNone() { ItemClass testItem = new ItemClass(); // 确保未给testItem设置任何Feedback Feedback actualFeedback = testItem.getFeedback(); // 断言返回null assertNull("无Feedback时未返回null", actualFeedback); } }
注意事项
- 如果使用BlueJ默认的JUnit 3版本,测试类需要继承
junit.framework.TestCase,测试方法必须以test开头,无需@Test注解; assertSame和assertNull的第一个参数是断言失败时的提示信息,可选但建议添加,方便快速定位问题。
内容的提问来源于stack exchange,提问作者Coder2002
相关产品推荐
相关产品推荐

