0

オブジェクトの内部からアサーションを呼び出す方法はありますか?私はSeleniumテストを作成し、アサーションと簡単なレポートのためにテストユニットを使用しています。トップレベルのテスト(Test :: Unit :: TestCaseを拡張するクラス)とセレンWebドライバーの間に抽象化レイヤーがあります。私は抽象化レイヤーにページ上のすべてのアイテムを担当させており、抽象化レイヤーが予期していたもの以外のものを見つけた場合にトップレベルのテストを停止する方法が必要です。この抽象化レイヤーの内側から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 に答える