有没有办法从对象内部调用断言?我正在编写 Selenium 测试并使用测试单元进行断言和轻松报告。我在顶级测试(扩展 Test::Unit::TestCase 的类)和 selenium webdriver 之间有一个抽象层。我有我的抽象层负责页面上的所有项目,如果抽象层发现的东西与预期不同,我需要一种方法让顶层测试停止。如果我可以从这个抽象层内部调用一个 Test::Unit 断言,那将是理想的。如果有任何关于如何更好地实现这一点的建议,我愿意接受建议。谢谢,扎克
问问题
91 次
1 回答
0
Test::Unit::Assertions
您可以通过包含模块从抽象层中调用 Test::Unit 断言。
所以你的代码可能看起来像:
require 'test/unit'
class MyPageObject
include Test::Unit::Assertions
def initialize()
assert(false, 'abstraction layer found something wrong')
end
end
class MyTest < Test::Unit::TestCase
def test_1()
page = MyPageObject.new
assert(false, 'test found something wrong')
end
end
该include Test::Unit::Assertions
行将使您的 MyPageObject 类(我相信这就是您所称的抽象层)访问 Test::Unit 断言。
在上面的示例中,MyPageObject 类中的断言将失败,导致 test_1 失败。
使用此解决方案时我遇到的唯一问题是报告完成的断言数量(见 Test::Unit 报告的末尾)。该数字不包括在抽象层中所做的断言。但是,我还没有看到这个数字有足够的价值值得研究。
于 2012-10-31T02:56:26.823 回答