I am iterating through a collection and using Test::Unit assertations
on each object
begin
search.each {|@x|
assert($ie.contains_text(@x)) }
rescue => e
puts "#{@x} does not exist in HTML"
end
However, the problem is that if the first assertation is false, an
exception is thrown and my loop terminates. I would like to continue
the loop after an exception is thrown. I have tried 'retry', but I find
myself in an infinite loop.
I am iterating through a collection and using Test::Unit assertations
on each object
begin
search.each {|@x|
assert($ie.contains_text(@x)) }
rescue => e
puts "#{@x} does not exist in HTML"
end
However, the problem is that if the first assertation is false, an
exception is thrown and my loop terminates. I would like to continue
the loop after an exception is thrown. I have tried 'retry', but I find
myself in an infinite loop.
You can put the begin/rescue/end inside your loop, like this:
[1,2,3].each do |x|
begin
raise unless x == 2
rescue
puts "No! #{x}"
end
end
Also, you might find the asserts_raises method useful. It lets you
predict that something will raise an exception. It probably wouldn't
be a good fit with the loop structure you're using, but you could
isolate some exception-raising tests and test them that way.
I am iterating through a collection and using Test::Unit assertations
on each object
begin
search.each {|@x|
assert($ie.contains_text(@x)) }
rescue => e
puts "#{@x} does not exist in HTML"
end
However, the problem is that if the first assertation is false, an
exception is thrown and my loop terminates. I would like to continue
the loop after an exception is thrown. I have tried 'retry', but I find
myself in an infinite loop.
Aidy, are you using this code in a unit test, or are you using the assertions as part of your normal code? If this is normal code, see David's answer how to catch the error inside the loop.
If this is part of a unit test, and you want to report every false element, take a look at the code in