1

在 Rascal 中,您可以通过test在布尔函数上指定修饰符来定义测试函数。:test并通过在 Rascal 命令行中键入来运行它们。在这里查看详细信息。

是否可以以某种方式指定测试装置(用于测试套件)?例如setup()teardown()功能?

4

1 回答 1

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;

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

于 2013-11-20T22:59:04.053 回答