在抽象层中使用Test :: Unit

时间:2012-10-30 21:47:24

标签: ruby selenium-webdriver testunit pageobjects

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

1 个答案:

答案 0 :(得分: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报告的末尾看到)。该数字不包括抽象层中的断言。但是,我没有看到这个数字有足够的价值值得调查。