【问题标题】:How to test for Getters and Setters in Java如何在 Java 中测试 Getter 和 Setter
【发布时间】:2020-08-23 04:15:42
【问题描述】:

所以,我正在处理一项编码任务,但我陷入了僵局。这是我从教授那里收到的反馈,之后我会附上我一直在处理的代码并进一步解释这个问题:

感谢您与我们联系。这看起来不错的样子!我唯一建议的是在整个代码中添加高级 cmets 并测试 MainTeamClass.java 程序中 Team 对象的 set() 方法,以确保 set() mutator 方法按预期工作。用一个测试值调用set()方法,然后调用get()方法看是不是同一个值。

这是代码的副本:

  public class Team 
  {

   private String team;   
   private int points;   
   private double average;

   public Team()   
   {
     team = " Default";   
   }   
   public Team(String startTeam, int startPoints, double startAverage)   
   {
     team = startTeam;
     points = startPoints;
     average = startAverage;   
   }   

   public String getTeam()   
   {
     return team;   
   }   
   public int getPoints()   
   {
     return points;   
   }   
   public double getAverage()   
   {
     return average;   
   }   
   public void setTeam(String newTeam)   
   {
     team = newTeam;   
   }   
   public void setPoints(int newPoints)   
   {
     if (newPoints >= 0)
     {
       points = newPoints;
     }   
   }   
   public void setAverage(double newAverage)   
     {
     if (newAverage >= 0.0)
     {
       average = newAverage;
     }   
  } 
}

主类:

 public class MainTeamClass {   public static void main(String[] args) 
 {
     Team sanfran = new Team();
     String sanfranTeam = sanfran.getTeam();
     int sanfranPoints = sanfran.getPoints();
     double sanfranAverage = sanfran.getAverage();
     System.out.println(" The team name is:" + sanfran.getTeam()
      + "\n The number of points earned equals " + sanfran.getPoints()
      + "\n The average season score is:" + sanfran.getAverage());

     Team cowboys = new Team("Dallas Cowboys", 36, 43.5);
     String cowboysTeam = cowboys.getTeam();
     int cowboysPoints = cowboys.getPoints();
     double cowboysAverage = cowboys.getAverage();
     System.out.println("\n The team name is: " + cowboys.getTeam()
     + "\n The number of points earned equals " + cowboys.getPoints()
     + "\n The average season score is: " + cowboys.getAverage());   } }

基于此代码,我将如何测试 set() 方法和 get() 方法?有人可以解释如何做到这一点并提供一个例子吗?它不在本周课堂上的章节中,我在网上搜索了一些帮助但无济于事,所以我希望尽可能多地提供反馈。先感谢您!

【问题讨论】:

  • sanFran.setTeam(newTeam); assert sanFran.getTeam().equals(newTeam);
  • 你能用'junit'、'testng'还是把测试放在main方法里?
  • @user 我会把它放在测试类中还是? (也:谢谢!)
  • 我想是的。您也可以进行 JUnit 测试,但这似乎有点多
  • @sc0der 我可以使用任何一个,我假设。说明和反馈并没有真正说明如何进行测试。我会假设我会在 main 方法中进行测试。

标签: java testing getter-setter getter setter


【解决方案1】:

“用一个测试值调用set()方法,然后调用get()方法看是不是同一个值。”:表示传递给@987654321的值@ 方法与必须从 get 方法返回的值相同,如下所示:

Team team = new Team ();
String test = "stringForTest";
team.setTeam(test);
if(!team.getTeam().equals(test)) {
    System.out.println("Problem with set/get method!");
}

【讨论】:

  • 啊,这看起来很简单,我坐在这里很困惑。太感谢了!我想我假设测试会有一个明确的输出来证明或反驳这些方法是否有效。
【解决方案2】:

您可以使用不同的方法,其中一种方法是 assertion 并使用 java -ea <program_name> 运行 启用断言

public class MainTeamClass {  
   public static void main(String[] args) {     
     Team cowboys = new Team();

     cowboys.setTeam("Dallas Cowboys");
     String cowboysTeam = cowboys.getTeam();
     assert cowboysTeam == "Dallas Cowboys" : "cowboysTeam Not valid";

     cowboys.setPoints(36);
     int cowboysPoints = cowboys.getPoints();
     assert cowboysPoints == 36 : "cowboysPoints Not valid";

     cowboys.setAverage(43.5);
     double cowboysAverage = cowboys.getAverage();
     assert cowboysAverage == 43.5 : "cowboysAverage Not valid";
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多