1

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

我使用的是 3.4.0 版。

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

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

我习惯于在有意义的测试名称下对断言进行分组。如果我有 5 个断言并且其中 2 个失败,我想在测试结果中看到这两个。如果单个测试中有许多失败的断言,我无法一次修复所有断言。我必须“修复”第一个休息,找到另一个……“修复”并重新测试……等等。

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

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

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

任何帮助表示赞赏!谢谢!

4

1 回答 1

1

您想要做的(以及我们在 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.");
        }
    }));

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

于 2013-08-10T21:27:01.777 回答