当前位置: 首页 > 知识库问答 >
问题:

是的。只有一个失败的断言之后,测试才会停止

丰超
2023-03-14

我来自QUnit背景(我已经很高兴使用它很多年了)。在我目前的项目中,YUI是一个选择的框架,所以使用YUI.Test进行单元测试是合理的。

我使用的是3.4.0版。

不幸的是,我遇到了一些意想不到的“功能”。根据留档http://yuilibrary.com/yui/docs/test/#assertions:

“注意:即使此示例显示多个断言失败,一旦一个断言失败,测试就会停止,从而导致所有其他断言被跳过。

我习惯在有意义的测试名称下对断言进行分组。如果我有5个断言,其中2个失败了,我想在测试结果中看到这两个断言。如果在一次测试中有许多失败断言,我不能一次修复它们。我必须“修复”第一个restest,找到另一个...“修复”并重新测试...诸如此类。

当我在本地环境中时,这没什么大不了的。在持续集成环境中,问题开始变得严重。我不想为每个失败的断言运行构建(在竹子/Jenkins上)。如果我在一个测试用例中有多个测试(这很可能...)这是一场噩梦,我的团队会在一天后死去...

目前我正在使用“解决方法”...每个测试只有一个断言:(这意味着需要大量的测试...

有没有其他方法可以解决这个问题?

任何帮助赞赏!谢谢!

共有1个答案

颛孙麻雀
2023-03-14

您想要做的(以及我们在YUI中自己的测试中所做的)是将不同的测试分组到一个<code>Y.Test.Case<code>下。下面是一个示例,取自Y.ArraySort中的测试:

var ArrayAssert = Y.ArrayAssert,

    suite = new Y.Test.Suite('ArraySort');

    suite.add(new Y.Test.Case({
        name: 'compare()',

        'should compare numbers': function () {
            var array = [2,1,3,5,4];
            array.sort(Y.ArraySort.compare);
            ArrayAssert.itemsAreSame([1,2,3,4,5], array, "Expected sorted numbers.");
        },

        'should compare strings': function () {
            var array = ["caa", "baa", "bba", "aba", "cba", "aaa", "abc"];
            array.sort(Y.ArraySort.compare);
            ArrayAssert.itemsAreSame(["aaa","aba","abc","baa","bba","caa","cba"], array, "Expected sorted strings.");
        },

        'should compare mixed alpha and numeric strings': function() {
            var array = ["attic", "Aardvark", "1", "0", "Zoo", "zebra"];
            array.sort(Y.ArraySort.compare);
            ArrayAssert.itemsAreSame(["0", "1", "Aardvark","attic","zebra","Zoo"], array, "Expected sorted mixed strings.");
        }
    }));

如果一个断言失败,Y.Test.Case中的每个测试都应该失败,您应该将相关测试组合在一个Y.Test.Case名称下。单个测试的名称应该是一个简单的、人类可读的描述,描述您正在测试的特定功能,并且应该仅针对该功能进行断言。

 类似资料:
  • 我已经在Netbeans上通过JS测试驱动程序设置了JavaScript单元测试。然而,与该教程中的结果不同,断言失败后不会执行更多测试。我怎样才能改变这种行为? 例如,给定此测试文件: 文件: 进度条显示50%,(2次测试),应该是33%。 文件: 我可以通过命令行运行所有测试。(在Windows PowerShell上)。按如下方式运行,失败后测试不会停止运行: java-jar$env: J

  • 当我尝试执行一个新的单元测试用例时,它会显示以下错误。 注意:我没有特权设置路径,因为我已经将chrome web驱动程序放在D驱动器中。 测试在14:56开始。。。C:\Users\xxx.xxxx\PyCharm项目\Automation\venv\Scripts\python.exe“C:\Users\xx.xxx\AppData\Local\JetBrains\PyCharm社区版2019

  • 如果我运行特定的场景,它都是绿色的。如果我只运行cucumber套件(又名。耙cucumber),它都是绿色的。但是,如果我运行完整的测试套件,(又名。耙),单个场景失败。 我假设这与数据库的状态和我的配置有关。我编写了cucumber场景以假设最初为空的数据库,并且我正在为各个场景构建小型数据集。 我正在使用DatabaseCleaner和截断策略,我的理解是,这将清除数据库。我弄错了吗?单元测

  • 有一个excelsheet,其中所有URL(16)都列在一列中。现在,一旦页面加载,需要验证页面标题是否与excel中已存储的预期标题匹配。我可以使用for循环执行它。如果全部通过,它将运行所有URL,但如果失败,它将停止运行。我需要完整地运行它,并给出一份通过和失败的报告。我编写了以下代码。 请在这方面帮助我。

  • 我用的是3.4.0版 我对YUI有一个奇怪的问题。测试断言。下面是一个示例: 当断言在事件的回调中时,它永远不会失败:(文档中没有提到这种情况... 也许我做错了什么,但是缺少文档很难确定... 更新 没有等待/恢复的示例:http://jsfiddle.net/op1ekun/Fgra6/2/ 和具有等待/恢复 http://jsfiddle.net/op1ekun/Fgra6/5/ 更新2 已

  • 我这里少了点什么。我做错什么了吗?