0

有没有办法从对象内部调用断言?我正在编写 Selenium 测试并使用测试单元进行断言和轻松报告。我在顶级测试(扩展 Test::Unit::TestCase 的类)和 selenium webdriver 之间有一个抽象层。我有我的抽象层负责页面上的所有项目,如果抽象层发现的东西与预期不同,我需要一种方法让顶层测试停止。如果我可以从这个抽象层内部调用一个 Test::Unit 断言,那将是理想的。如果有任何关于如何更好地实现这一点的建议,我愿意接受建议。谢谢,扎克

4

1 回答 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 回答