javascript - YUI.Test 测试在只有一个失败的断言后停止

标签 javascript unit-testing continuous-integration yui assertions

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

我使用的是 3.4.0 版本。

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

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

我习惯于将断言分组到有意义的测试名称下。如果我有 5 个断言,其中 2 个失败,我希望在测试结果中看到这两个断言。如果在单个测试中有大量失败的断言,我无法立即修复所有这些断言。我必须“修复”第一个测试,找到另一个...“修复”并重新测试...等等。

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

目前我正在使用一种“解决方法”...每个测试只有一个断言:(这意味着很多测试...

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

感谢任何帮助!谢谢!

最佳答案

您想要做的(以及我们在 YUI 中自己的测试中所做的)是将不同的测试分组到单个 Y.Test.Case 下。下面是一个取自 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 下名称代替。单个测试的名称应该是一个简单的、人类可读的描述,描述您正在测试的特定功能,并且应该仅针对该功能进行断言。

关于javascript - YUI.Test 测试在只有一个失败的断言后停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18142358/

相关文章:

c# - 如何伪造 C# 单元测试中内置方法的返回?

javascript - 无法让 chai.spy.on 工作

continuous-integration - 使用持续集成部署到虚拟机以运行集成测试

docker - gitlab CI/CD中的代码覆盖率

javascript - 应用 Bootstrap 主题时无法绑定(bind) Angular 选择

javascript - 如何使用 jQuery 在渲染布局中查找 "next"元素?

android - 诸如单元测试和日志记录之类的编程实践在 Android 上重要吗?

c++ - 如何在本地测试github CI?

javascript - 意外的 ionicons 行为

javascript - Next 未定义 next(err)