![](/img/trans.png)
[英]How can I mock some method calls of a bean but use the defined bean in other method calls in the same test class?
[英]If I set up a class method with 2 parameters defined from the other class, how can I get the values defined on the other class?
说我宣布了一个Camera
类
public class Camera {
}
然后我创建了另一个类
public int compare (Camera camOne, Camera camTwo) {
}
如果我设置camOne.price
的值,其中price是Camera
类中的定义值,我该如何检索该值?
您可以将其公开:
public int var
或者创建getter和setter方法:
public static int getVar ()
{
return var;
}
通常,您会选择以下两种方法之一:
1.最不喜欢的:
public class Camera {
public float price;
}
public class CameraComparer {
public float compare (Camera camOne, Camera camTwo) {
// do something; e.g. return difference
return camOne.price - camTwo.price;
}
}
2.更优选/标准:
public class Camera {
private float price;
public float getPrice() {
return price;
}
}
public class CameraComparer {
public float compare (Camera camOne, Camera camTwo) {
return camOne.getPrice() - camTwo.getPrice();
}
}
你想达到什么目的?
是否有理由不使用私有访问修饰符和getter方法。 我会因为易于使用而将其公之于众,因为它可能会导致问题。
基于我已经阅读的评论,您似乎正在尝试制作比较方法,这是相当常见的。 也许另一种方法可能是实现Comparable
接口 ,这将迫使您实现compareTo方法。
有关示例,请参见以下代码:
package com.grade;
import java.util.Comparator;
public class Grade implements Comparable {
private double percentage;
public double getPercentage() {
return percentage;
}
public void setPercentage(double percentage) {
this.percentage = percentage;
}
@Override
public int compareTo(Object o1) {
if (o1 instanceof Grade) {
Grade grade1 = (Grade) o1;
if (this.getPercentage() > grade1.getPercentage()) {
return 1;
} else if (this.getPercentage() < grade1.getPercentage()) {
return -1;
} else {
return 0;
}
}
return -1;
}
@Override
public boolean equals(Object obj1) {
if (obj1 instanceof Grade) {
Grade grade1 = (Grade) obj1;
if (this.getPercentage() == grade1.getPercentage()) {
return true;
} else {
return false;
}
}
return false;
}
public static void main(String args[]) {
Grade chem = new Grade();
chem.setPercentage(92.50);
Grade astro = new Grade();
astro.setPercentage(40.12);
System.out.println(chem.compareTo(astro));
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.