我来自QUnit背景(我很高兴使用它多年)。在我目前的项目中,YUI是一个选择框架,因此使用YUI.Test进行单元测试是合理的。
我使用的是3.4.0版本。
不幸的是,我遇到了一些意想不到的“功能”。根据文件http://yuilibrary.com/yui/docs/test/#assertions:
“注意:尽管此示例显示多个断言失败,但只要一个断言失败,测试就会停止,导致所有其他断言失败。”
我习惯于在有意义的测试名称下对断言进行分组。如果我有5个断言,其中2个失败,我想在测试结果中看到两个断言。如果在单个测试中有许多失败的断言,我无法立即修复所有这些断言。我必须“修复”第一个重新测试,找到另一个...“修复”并重新测试......等等。
当我在当地环境中时,这不是什么大问题。在持续集成环境中,问题开始变得严重。我不想为每个失败的断言运行构建(在Bamboo / Jenkins上)。如果我在TestCase中进行多次测试(这很可能......)这是一场噩梦,我的团队只会在一天之后就会被杀......
目前我正在使用“解决方法”...每个测试只有一个断言:(这意味着很多测试......
还有其他方法可以解决这个问题吗?
感谢任何帮助!谢谢!
答案 0 :(得分: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.");
}
}));
如果一个断言失败,Y.Test.Case
内的每个测试都会失败,您应该在一个Y.Test.Case
名称下对相关测试进行分组。单个测试所具有的名称应该是一个简单的,人类可读的描述,描述您正在测试的特定功能,并且只能单独声明该功能。