服务器端单元¶
应用服务器的构建¶
建立一个可以执行服务器端单元测试的环境。请使用包含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()可以互换。 (以任何顺序)
- oneTimeSetUp()
- setUp()
- testSample1()
- tearDown()
- setUp()
- testSample2()
- tearDown()
- oneTimeTearDown()
创建测试用例¶
测试用例描述了实际的单元内容。使用特殊函数 (defineTestSuite()除外)和评估函数编写测试内容。测试目标文件(user / test / source.js)
//将两个值相加。 机能 calcPlus(X, ÿ) { 归还 X + ÿ; }测试用例
//加载要测试的用户/test/source.js作为Object 。 让 模组 = JsUnit。loadScriptModule(“用户/测试/来源”); 机能 testSample1() { //调用被测函数 。 让 结果 = 模组。calcPlus(1个,两个); //测试该函数的结果是否正确。 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 。 归还 套房; }