【发布时间】:2015-10-20 07:43:30
【问题描述】:
我有一个可以以多种不同方式呈现的枚举。作为字符串,作为整数和作为双精度(不同范围),作为 Vector2D,最后作为枚举值本身。这是一个通用示例,这些值不具有代表性。我对此的实际使用具有更多的价值和方法。
public enum Example {
value0("Name0", 0, 0.0, 0.01707, 0.12534);
value1("Name1", 1, 25.0, 0.1707, 0.53434);
value2("Name2", 2, 55.0, 0.70701, 0.23534);
value3("Name3", 3, 65.0, 0.01707, 0.34786);
value5("Name4", 4, 100.0, 0.01707, 0.42594);
private final String name;
private final int number;
private final double head;
private final Vector2d pointVec;
/**
* Constructor invoked for each value above.
*/
enumExample(String name, int no, double hdg, float compX, float CompY) {
this.name = name;
this.number = no;
this.head = hdg;
this.pointVec = new Vector2d(compX, compY);
}
public String getName(){
return name;
}
public int getNumber() {
return no;
}
public int getHead() {
return head;
}
public Vector2D getVector() {
return pointVec;
}
public Example getCalcValue(int value) {
return calcValue(getNumber(value));
}
/*
* There are more methods that perform calculations on the enum's
* attributes.
*/
}
为了确保使用此枚举的其他类使用正确功能的枚举。我想对其进行一套全面的测试,从而确保数据输入已正确执行,并且枚举及其相关数据没有损坏。
目前,具有 5 个枚举值的示例有 31 个测试。我需要最多 33 个枚举值的版本。大约是 200 次测试。
我希望能够使用数据驱动测试,因为这样可以更轻松地通过肉眼检查测试数据。
有人对如何设置枚举有任何想法吗?我发现的所有数据驱动测试示例都有一个简单的类和一种测试方法。
【问题讨论】:
-
对我来说,看起来你不想测试枚举,而是枚举中的常量数据。要对此进行测试,您可能可以编写一个运行测试列表的参数化测试,将枚举值和预期结果作为参数。因此,您只需为每个要测试的值编写一个(或多个)测试,然后可以对所有枚举值运行此(这些)测试。如果这是你想要的,我可以给你举个例子......
-
您实际上要测试枚举的什么属性?
-
显示一些你现有的测试。
-
正如@FlorianSchaetz 提到的,你应该看看参数化测试。这是一个例子github.com/junit-team/junit/wiki/Parameterized-tests
-
感谢 SubOptimal 提供参考,但这是我已经看过但发现不足的示例之一。
标签: java junit enums data-driven