2016-02-02 138 views
1

我正在尝试编写一个测试器类来测试已编译的文件。我基本上试图查看旋转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"); 
    } 
+2

所以你至少知道这个类的API。看看JUnit;这是用Java测试的标准。 – Makoto

回答

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一个参数化测试的例子。