intra-mart Accel Platform 脚本开发模式编程指南 第16版2020-04-01

服务器端单元

什么是服务器端单元测试?

在服务器端单元测试中,在运行中的服务器上执行在脚本开发模式创建的功能容器(js)的单元测试。
由于它是在实际运行的应用程序服务器中执行的,因此可以在实际的操作环境中执行单元测试。

下图是在服务器上执行单元测试结果的示例屏幕。
您可以直观地检查测试结果状态和错误状态。
../../../_images/jsunit.png

注意

此函数仅在运行的服务器上执行单元测试,并且不与eBuilder链接。

应用服务器的构建

建立一个可以执行服务器端单元测试的环境。

请使用包含IM-Juggling IM-UnitTest的WAR文件构建应用服务器。
IM-UnitTest存在于模块配置的“开发框架 ” 分类中。

关于测试用例

使用脚本开发模式创建测试用例。
创建测试用例有几个规则。

测试用例中的函数类型和执行顺序

特殊函数类型

特殊函数是在执行单元测试中具有特殊含义的函数 。
特殊函数 说明
testXXXXXX()
搜索以test开头的函数 ,并根据需要执行它们。
此函数在评估函数使用,你写的测试内容。
每个函数的执行顺序是任意的。
setUp()
函数执行每个testXXXXXX()之前执行的功能。
如果不存在,将不会执行。
tearDown()
执行每个testXXXXXX()后,将执行此函数 。
如果不存在,将不会执行。
oneTimeSetUp()
加载测试用例文件后,仅执行一次。
如果不存在,将不会执行。
oneTimeTearDown()
在测试用例中的所有testXXXXXX()被执行之后,在最后执行一次。
如果不存在,将不会执行。
defineTestSuite()
如果定义了此函数 ,请将此文件视为测试套件。
“测试套件”是一次执行多个测试用例的功能。
所有其他函数均被忽略。
创建测试套件文件时,仅定义此函数 。

评估函数

评估函数是用于评估测试结果的函数 。
通过使用此函数 ,可以收集信息作为测试结果。
评估函数 说明
JsUnit.assert([评论],实际)
确保实际值是正确的。
如果评估失败,注释将显示在结果中。它是可选的。
JsUnit.assertTrue([评论],实际)
确保实际值是正确的。
如果评估失败,注释将显示在结果中。它是可选的。
JsUnit.assertEquals([comment],期望,实际)
确认评估值(实际)和预期值(期望)相同。
如果评估失败,注释将显示在结果中。它是可选的。
JsUnit.assertNull([评论],实际)
确保实际值为空。
如果评估失败,注释将显示在结果中。它是可选的。
JsUnit.assertUndefined([comment],期望,实际)
确保未定义实际值。
如果评估失败,注释将显示在结果中。它是可选的。
JsUnit.assertNaN([评论],实际)
确保实际值为NaN。
如果评估失败,注释将显示在结果中。它是可选的。
JsUnit.assertFalse([评论],实际)
确认评估值(实际)为假。
如果评估失败,注释将显示在结果中。它是可选的。
JsUnit.assertNotEquals([comment],期望,实际)
确认评估值(实际)和预期值(期望)不同。
如果评估失败,注释将显示在结果中。它是可选的。
JsUnit.assertNotNaN([评论],实际)
确保实际值不是NaN。
如果评估失败,注释将显示在结果中。它是可选的。
JsUnit.assertNotNull([注释],实际)
确保实际值不为空。
如果评估失败,注释将显示在结果中。它是可选的。
JsUnit.assertNotUndefined([注释],实际)
确保实际值未定义。
如果评估失败,注释将显示在结果中。它是可选的。
JsUnit.fail(消息)
评估失败。
该消息显示在结果中。

执行顺序

测试用例中函数执行顺序的图像如下。
让我们举一个例子,其中testSample1()和testSample2() 函数测试用例文件中被描述为测试函数 。
TestSample1()和testSample2()可以互换。 (以任何顺序)
  1. oneTimeSetUp()
  2. setUp()
  3. testSample1()
  4. tearDown()
  5. setUp()
  6. testSample2()
  7. tearDown()
  8. oneTimeTearDown()

创建测试用例

测试用例描述了实际的单元内容。
使用特殊函数 (defineTestSuite()除外)和评估函数编写测试内容。

测试目标文件(user / test / source.js)

//将两个值相加。
机能 calcPlusX ÿ {
  归还 X + ÿ;
}

测试用例

//加载要测试的用户/test/source.js作为Object  。
 模组 = JsUnitloadScriptModule“用户/测试/来源”);

机能 testSample1() {
  //调用被测函数 。
   结果 = 模组calcPlus1个两个);
  //测试该函数的结果是否正确。
  JsUnit断言等于结果);
  //测试该函数的结果是否正确。 (附评论)
  JsUnit断言等于“加法测试(1 + 2)”结果);
}

注意

创建测试用例时,请记住以下几点:
  • 不要使用会导致屏幕转换的API。
    如果描述了导致屏幕转换的API(例如Debug.browse(),redirect(),forward(),Module.alert。*),则该API将无法正常工作,因为它会转换为指定的屏幕。
    通过划分为不同的函数测试。

创建一个测试套件

一个测试套件可以一起运行多个测试用例。

要创建测试套件,请定义defineTestSuite 函数 。
在defineTestSuite 函数创建一个JsTestSuite Object ,并添加要分组的测试用例和测试套件文件。
 机能 defineTestSuite() {

   //创建JsTestSuite Object 
   // JsTestSuite Object 的第一个参数是名称。
    套房 = 新的 JsTestSuite“测试聚会”);

   //添加测试用例或测试套件文件。
   // addTest 函数的第一个参数是名称。
   // addTest 函数的第二个参数是测试用例或测试套件文件的路径(完整路径)。
   套房addTest“第一次测试。”“样本/测试用例/ test2”);
   套房addTest“第二次测试。”“样本/测试用例/ test3”);
   套房addTest“第三次测试。”“样本/测试用例/ test_suite2”);

   //返回测试套件Object  。
   归还 套房;
}

部署和运行测试用例

测试用例放置

将创建的测试目标文件,测试用例文件和测试套件文件放在以下位置。
如果已经放置了要测试的文件,则无需放置它。
应用程序服务器/ WEB-INF / jssp / src中的WAR文件部署文件夹

执行测试用例

  1. 以用户身份登录。

  2. 单击“ 网站地图 ”->“测试工具”->“单元测试启动器”。

    ../../../_images/launcher.png

    注解

    历史记录按路径名的升序显示以前执行的测试的路径。
    您可以通过单击测试路径的链接来重新运行。
    您也可以通过单击历史记录的“删除”图标来删除历史记录。
    要删除所有历史记录,请单击“全部删除”按钮。
  3. 在“测试用例路径”中,输入要执行的测试用例或测试套件文件的路径。

  4. 单击运行按钮。

  5. 测试运行并显示结果。

    ../../../_images/jsunit.png

    项目 说明
    测试方法
    执行的测试方法的名称。
    如果测试方法评估失败或发生错误,则测试方法名称将显示为链接。
    单击链接以详细内容评估详细内容 。
    失误 测试期间发生的错误数。
    失败的 测试期间评估函数中评估失败的次数。
    成功的 测试期间评估函数成功评估的次数。
    合计 评估函数评估的数量与测试期间错误数量的总和。
    执行时间 测试执行时间。单位是毫秒。
    图表 测试结果以彩色条形图表示。