在Rascal中,您可以通过在布尔函数上指定test
修饰符来定义测试函数。并通过在Rascal命令行键入:test
来运行它们。详情请见over here。
是否有可能同时指定测试夹具(用于测试套件)?例如setup()
和teardown()
函数?
答案 0 :(得分:1)
您可以通过在编写测试的模块中包含全局变量来编写设置函数:
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;
然后测试运行器将为测试函数的参数生成大量随机输入。您也可以通过某些标签影响输入生成。如果您有兴趣,请告诉我们。