编写Tester类来测试编译文件

时间:2016-02-02 18:21:52

标签: java unit-testing junit

我正在尝试编写一个测试器类来测试已编译的文件。我基本上试图在旋转90度时查看坐标是否正确。我不太确定如何编写测试类。关于如何做到这一点的任何建议?

   public static void testRotate90(){
     int fails = SUnit.testsFailed();
     System.out.println ("Testing Rotate 90...");

     CartesianPoint cp = new CartesianPoint();
     CartesianPoint cp2 = cp.rotate90();

     if (fails == SUnit.testsFailed())
         System.out.println("     PASS");
   }

1 个答案:

答案 0 :(得分:3)

您应该使用断言来比较您期望结果与实际结果的对比。由于无效的断言或调用fail()方法而导致测试失败(例如,如果您希望抛出异常,则可能会在不应该到达的行上调用失败)。

您不必担心为测试生成输出,测试框架将记录哪个断言对于哪个测试类失败。

假设您的CartesianPoint类看起来像:

public class CartesianPoint {
    private final long x;
    private final long y;
    public CartesianPoint(long x, long y) {
        this.x = x; this.y = y;
    }

    public CartesianPoint rotate90() {
        // actual logic omitted, hardcoding result
        return new CartesianPoint(0, 1); 
    }

    public long getX() {return x;}

    public long getY() {return y;}
}

然后,如果您希望创建一个x = 1且y = 0的点并将其旋转以获得x = 0且y = 1,则测试可能如下所示:

public class SomeTest {

    public void testRotate90(){
        CartesianPoint cp = new CartesianPoint(1,0);
        CartesianPoint cp2 = cp.rotate90();
        SUnit.assertEquals(0, cp2.getX());
        SUnit.assertEquals(1, cp2.getY());
   }
}

对于这样的情况,您可能希望使用许多不同的输入进行测试,请参阅this question以获取如何使用JUnit编写参数化测试的示例。