在 Rascal 中,您可以通过test
在布尔函数上指定修饰符来定义测试函数。:test
并通过在 Rascal 命令行中键入来运行它们。在这里查看详细信息。
是否可以以某种方式指定测试装置(用于测试套件)?例如setup()
和teardown()
功能?
您可以通过在编写测试的模块中包含一个全局变量来编写设置函数:
bool s = setup(); // is called
int myGlobal1 = 2;
bool setup() {
myGlobal1 = 1;
}
teardown
不是那么必要,因为除了这些全局变量之外,我们在 Rascal 中没有那么多状态。
在测试之间共享状态的另一种可能更好的方法是使用 @memo 函数:
@memo
value getMyExampleData(int input) = ...;
test bool myTest1() {
myData = getMyExampleData(1);
return /shouldContainThis x := myData;
}
test bool myTest2() {
myData = getMyExampleData(1);
return /shouldContainThisToo y := myData;
}
对 getMyExampleData 的第二次调用将非常快,因为结果是从缓存中获取的。如果 JVM 内存不足,缓存会自动清除。
顺便说一句,还有一些对随机测试的支持,如:
test bool myTest(int i, int j) = i + j == j + i;
然后测试运行器会为测试函数的参数生成大量随机输入。您也可以通过一些标签来影响输入生成。如果您有兴趣,请告诉我们。