编写测试类的类方法

时间:2013-04-24 02:52:31

标签: java

public class CirclTest{
    public static void main(String[] args){
        Circle first=new Circle('R',3.0);

        Circle first=new Circle('R',3.0);

        Circle second=new Circle();

        System.out.println("first's radius is " + first.getRadius());

        System.out.println("first's area is " + first.getArea());
        System.out.println("second's area is " + second.getArea());

        if(first.hasLargerAreaThan(20)){
            System.out.println("first's area is larger than 20. ");
        }else{
            System.out.println("first's area is smaller than 20. ");
        }
    }
}

所以我应该写一个圆圈课。这就是我所做的。

public class Circle{
    private double radius=0.0;
    private double area=0.0;
    private char colour=' ';

    public Circle(char colour,double radius){
        this.colour=colour;
        this.radius=radius;
    }

    public Circle(){
        radius=0;
        colour='B';
    }


    public char getColour(){
        return colour;
    }
    public double getRadius(){
        return radius;
    }

    public double getArea(){
        return area;
    }


    }

我实际上对如何编写类感到困惑。就像我知道我需要通过私有等初始化变量。我需要构建一个构造函数但不知何故上面的代码不起作用。测试方法是正确的。但是我必须用它来实现我的课程。

3 个答案:

答案 0 :(得分:0)

您正在声明变量

Circle first

两次。如果要重新分配其值,只需执行

first=new Circle('R',3.0);

在if语句中你正在调用

first.hasLargerAreaThan(20)

当我没有在你的班级中看到这样的方法时。

答案 1 :(得分:0)

请问你的意思是什么代码不起作用?如果您指的是未正确计算的区域且始终为0,则会发生这种情况,因为您的默认值与0相同,并且从不计算它。您可能希望将计算逻辑放在getArea()方法中。

答案 2 :(得分:0)

首先,如果需要,您将需要使用测试框架来断言代码的有效性。查看JUnit

如果区域大于某个值的示例断言将被写为这样。

@Test
public void assertArea_calculatedProperly() {
    //given that the radius is 5,
    Circle c = new Circle('R', 5);

    //when I get the area...
    double result = c.getArea();

    //then I expect it to be around 78.53981634.
    assertTrue(result < 78.6);
    assertTrue(result > 78.5);
}

其次,你的getArea实际上没有获得该区域。您的代码中没有任何内容可以检索,然后计算区域。你甚至没有使用Math.PI。我建议你实现它 - 但是使用单元测试作为一种有效的方式来断言你将得到适当的回复。