0

我目前正在使用 FitSharp 和 dbfit 的 .net 实现来设置 Fitnesse。

我了解如何通过提交 URL 或从命令行触发测试或套件,例如:

java -jar fitnesse-standalone.jar -c "MyTest?test&format=text"

我想不通的是如何在这个查询字符串中提交变量值。

因此,如果我有一个包含 Sql 语句的测试,该语句在 Where 子句中引用了一个 Fitnesse 变量,并且该变量的值在同级静态页面中定义,我希望能够从命令行运行该测试并为此变量提交一个值,该值将覆盖静态页面中的值。就像是:

java -jar fitnesse-standalone.jar -c "MyTest?test&format=text&${myVar}=abc"

这可能吗?

谢谢马克

4

1 回答 1

0

从命令行传递变量有两种方法,都涉及环境变量。

(1) 定义一个环境变量(或识别一个已经存在的)。您可以使用通用系统变量(如%TMP%or %HOMEPATH%)或您自己的用户定义变量(例如%JAVA_HOME%)或创建您自己的变量。我的简短 Fitnesse 启动器(一个 .CMD 文件)是这样的:

set SEED=%RANDOM%
set FITNESSE_PORT=9999
java -jar fitnesse-standalone.jar -p %FITNESSE_PORT% -e 0

FITNESSE_PORT变量的定义只是为了在下一行中使用。然而,这个SEED变量有魔力:它允许几个人通过在每个会话中生成唯一值来同时运行相同的测试。(这假设每个用户都运行他们自己的 FitNesse 服务器,因此每个用户都会有一个唯一的会话。)然后我通过定义相对于种子的 id 来检测我的测试,例如

!define TestClient (MyTestClient_${SEED})

(2) 将一个环境变量设置传递给仅实例化 FitNesse 运行器的 java 进程。这种技术通过不同的实现为您提供完全相同的结果:

java -DSEED=%RANDOM% -jar fitnesse-standalone.jar -p %FITNESSE_PORT% -e 0

这会在 FitNesse 中产生完全相同的结果,让您可以访问%SEED%环境变量${SEED}.

有关更多信息,请参阅我在 Simple-Talk.com 上发布的关于使用 FitNesse 进行验收测试的七部分系列的第 2部分。

于 2014-01-11T23:01:59.793 回答