6

rubyのwatirを使用してWebアプリをテストすると、最後にブラウザーが開いたままになります。オンラインでのアドバイスとして、真の単体テストを行うには、すべてのテスト(分解呼び出し)でブラウザーを開いたり閉じたりする必要がありますが、それは遅くて無意味です。または、代わりに次のようなことをします。

 def self.suite
   s = super
   def s.afterClass
     # Close browser
   end

   def s.run(*args)
     super
     afterClass
   end
   s
 end

ただし、これによりサマリー出力が表示されなくなります(「100テスト、100アサーション、0失敗、0エラー」などが引き続き表示されます)。

テストの最後に、rubyまたはwatirを使用してブラウザーを閉じるにはどうすればよいですか?

4

2 に答える 2

12

RSpec仕様で唯一のブラウザーを使用する場合は、各サンプル グループ内でブラウザーを作成して閉じる:suite代わりに、フックを使用できます。:all

RSpec.configure do |config|
  config.before :suite do
    $browser = Watir::Browser.new
  end

  config.after :suite do
    $browser.close if $browser
  end
end

ただし、何らかの理由で RSpec やテスト フレームワークを自分で使用したくない場合は、Ruby のKernel#at_exitメソッドを使用できます。

# somewhere
$browser = Watir::Browser.new
at_exit { $browser.close if $browser }

# other code, whenever needed
$browser.foo

テスト フレームワークを使用し、独自のフレームワークをゼロから作成しないことをお勧めします。

于 2013-01-22T19:31:16.600 に答える
2

RSpecとCucumberには、どちらも「結局のところ」フックがあります。

RSpec:

describe "something" do
  before(:all) do
    @browser = Watir::Browser.new
  end
  after(:all) do
    @browser.close
  end
end

()のきゅうりenv.rb

browser = Watir::Browser.new

#teh codez

at_exit do
  browser.close
end
于 2013-01-22T13:36:59.743 に答える