为了账号安全,请及时绑定邮箱和手机立即绑定

如何为没有 getter 方法的 setter 方法编写单元测试?

如何为没有 getter 方法的 setter 方法编写单元测试?

繁花不似锦 2024-01-05 17:03:30
我有一堂课看起来像这样public class Assignment {   protected String AssName;   public void SetAssSpec(String theSpec){     this.AssSpec = theSpec;   }}这是我的测试课程class AssignmentTest {   @Test   void testSetAssSpec(){       String assignmentName = "CSE101";       Assignment cseAssigment = new Assignment();       cseAssigment.SetAssSpec(String assignmentName);       //Now what?   }} 因为没有getter方法。访问集合字符串的另一种方法是,cseAssigment.AssName但问题是 AssName 受到保护,所以我无法访问它。我将如何测试它?我是测试和 Junit 的新手。那么,请告诉我这是否有意义?
查看完整描述

4 回答

?
绝地无双

TA贡献1946条经验 获得超4个赞

此示例中的问题是它没有显示设置值后如何使用该值。这就是如何测试它的线索。

如果不使用,则 setter 就没用,也应该删除。

它是受保护的,所以我猜有一个子类正在使用它。在这种情况下,我将使用测试子类的方法。

如果通过反射使用,我也会通过反射来测试它。


查看完整回答
反对 回复 2024-01-05
?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

您可以声明一个具有 getter 的本地子类:


@Test

void testSetAssSpec(){

   class SubAssigment extends Assignment {

     String getter() { return AssName; }

   }


   String assignmentName = "CSE101";

   SubAssigment cseAssigment = new SubAssigment();

   cseAssigment.SetAssSpec(String assignmentName);


   assertEquals(assignmentName, cseAssignment.getter());

}

您可能并不真正需要测试 Java 分配是否有效。



查看完整回答
反对 回复 2024-01-05
?
HUX布斯

TA贡献1876条经验 获得超6个赞

测试 getter 方法可能有些过头了,但是如果您想在没有 getter 的情况下检查/测试对象中私有变量的值,您可以使用反射


Field f = obj.getClass().getDeclaredField("AssName"); //NoSuchFieldException

f.setAccessible(true);

String assignmentName = (String) f.get(obj); 


查看完整回答
反对 回复 2024-01-05
?
胡说叔叔

TA贡献1804条经验 获得超8个赞

String assignmentName = "CSE101";

Assignment cseAssigment = new Assignment();

cseAssigment.SetAssSpec(String assignmentName);

assertEquals(AssSpec ,ReflectionTestUtils.getField(cseAssigment, "AssSpec"));


查看完整回答
反对 回复 2024-01-05
  • 4 回答
  • 0 关注
  • 123 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信