Java 需要JUnit测试的帮助吗
有人告诉我应该进行JUnit测试,以检查所有代码是否都正常工作。我对朱尼特一无所知,所以我才问你们。无论如何,这是我的代码:Java 需要JUnit测试的帮助吗,java,Java,有人告诉我应该进行JUnit测试,以检查所有代码是否都正常工作。我对朱尼特一无所知,所以我才问你们。无论如何,这是我的代码: package cst8284.shape; public abstract class BasicShape { private double width; public double getWidth(){return width;} public void setWidth(double width){this.width = widt
package cst8284.shape;
public abstract class BasicShape {
private double width;
public double getWidth(){return width;}
public void setWidth(double width){this.width = width;}
@Override
public String toString(){
return ("BasicShape Overrides " + super.toString());
}
public abstract double getArea();
public abstract double getPerimeter();
}
这是我应该进行测试的地方
package cst8284.shape;
public class TestBasicShape {
public static void main(String[] args){
Circle circle = new Circle(2.0);
System.out.println(circle.toString());
System.out.println("The perimeter of the circle is " + circle.getPerimeter());
System.out.println("The area of the circle is: " + circle.getArea() + "\n");
Square square = new Square(2.0);
System.out.println(square.toString());
System.out.println("The perimeter of the square is " + square.getPerimeter());
System.out.println("The area of the square is: " + square.getArea() + "\n");
Rectangle rect1 = new Rectangle(2.0,3);
System.out.println(rect1.toString());
System.out.println("The perimeter of the rectangle is " + rect1.getPerimeter());
System.out.println("The area of the rectangle is: " + rect1.getArea() +"\n");
Rectangle rect2 = new Rectangle(rect1);
Rectangle rect3 = new Rectangle(2.0, 1.0);
System.out.println("The square and the circle are " + (square.equals(circle)?"":"not ") + "equal");
System.out.println("The rectangle and the square are " + (rect1.equals(square)?"":"not ") + "equal");
System.out.println("Rectangles 1 and 2 are " + (rect2.equals(rect1)?"":"not ") + "equal");
System.out.println("Rectangles 2 and 3 are " + (rect2.equals(rect3)?"":"not ") + "equal");
}
}
package cst8284.shape;
public class Circle extends BasicShape {
public Circle(){
}
public Circle(double width){
setWidth(width);
}
public Circle(Circle circle) {
setWidth(circle.getWidth());
}
//Getters
public double getArea() {
return Math.PI * (getWidth()/2) * (getWidth()/2);
}
public double getPerimeter() {
return 2*Math.PI*getWidth()/2;
}
@Override
public String toString(){
return ("Circle Overrides " + super.toString());
}
@Override
public boolean equals(Object obj){
if (!(obj instanceof Circle)) {
return false;
}
Circle c = (Circle)obj;
return (this.getWidth() == c.getWidth());
}
}
package cst8284.shape;
public class Square extends BasicShape{
public Square() {
}
public Square(double width) {
setWidth(width);
}
public Square(Square square) {
setWidth(square.getWidth());
}
//Getters
public double getArea() {
return getWidth()*2;
}
public double getPerimeter() {
return 4*getWidth();
}
@Override
public String toString(){
return ("Square Overrides " + super.toString());
}
@Override
public boolean equals(Object obj){
if (!(obj instanceof Square)) {
return false;
}
Square s = (Square)obj;
return (this.getWidth() == s.getWidth());
}
}
package cst8284.shape;
public class Rectangle extends Square{
private double height;
public Rectangle() {
}
public Rectangle(double width, double height) {
setWidth(width);
setHeight(height);
}
public Rectangle(Rectangle rectangle) {
setWidth(rectangle.getWidth());
setHeight(rectangle.getHeight());
}
public double getHeight(){
return height;
}
public void setHeight(double height){
this.height=height;
}
public double getArea() {
return getWidth()*getHeight();
}
public double getPerimeter() {
return 2*(getHeight()+getWidth());
}
@Override
public String toString(){
return ("Rectangle Overrides " + super.toString());
}
@Override
public boolean equals(Object obj){
if (!(obj instanceof Rectangle)) {
return false;
}
Rectangle r = (Rectangle)obj;
return (this.getWidth() == r.getWidth() && this.getHeight() == r.getHeight());
}
}
在这个程序中,我试图计算圆和正方形(基本形状的子类)和矩形(正方形的子类)的面积和周长,并试图比较每个形状是否相等(形状或大小)
提前谢谢你 我发现进行测试的最简单方法是为您希望在系统中测试其行为的每个类创建一个测试类,并将这些测试类放在单独的包中。 然后,假设您想测试矩形类中的方法
//imports
public void testRectangle(){
Rectangle rectange;
@Before
public void setup(){
rectangle = new Rectangle();
}
//Say you want to test whether the setHeight method works as it should
@Test
public void testSetHeight(){
rectangle.setHeight(10.0);
assertEquals(10.0, rectangle.getHeight());
}
//The rest of the methods you would like to test
需要注意的几点:
测试类中的方法从不接受任何参数。
@Before表示该方法将在每个测试方法之前运行。这允许您设置运行测试所需的任何内容。在每个测试方法之前,必须有@Test。我上面提供的示例非常简单,并不详尽,因此您应该查阅JUnit文档并了解更多信息 所以你不知道如何使用JUnit?让您开始:作为一个补充说明,您的类层次结构是有缺陷的。矩形不是正方形,而是一种特殊的矩形。如果我创建了一个需要正方形的函数,而你传入了一个非正方形的对象,我的函数可能会崩溃。如果我创建了一个矩形函数,你传入了一个正方形对象,我的函数应该可以正常工作,因为正方形是一个矩形,只是有一些额外的约束。