我正在尝试编写一个测试器类来测试已编译的文件。我基本上试图在旋转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");
}
答案 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编写参数化测试的示例。