Rascal单元测试框架是否支持测试夹具?

时间:2013-11-20 21:28:10

标签: rascal

在Rascal中,您可以通过在布尔函数上指定test修饰符来定义测试函数。并通过在Rascal命令行键入:test来运行它们。详情请见over here

是否有可能同时指定测试夹具(用于测试套件)?例如setup()teardown()函数?

1 个答案:

答案 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;

然后测试运行器将为测试函数的参数生成大量随机输入。您也可以通过某些标签影响输入生成。如果您有兴趣,请告诉我们。