Другая альтернатива без проверки исключения:
UPDATE tablename
SET val1 = in_val1,
val2 = in_val2
WHERE val3 = in_val3;
IF ( sql%rowcount = 0 )
THEN
INSERT INTO tablename
VALUES (in_val1, in_val2, in_val3);
END IF;
Вот, определите это в lib / tasks / tasks.rb
namespace :test do
namespace :randomize do
desc "Randomize tests"
Rake::TestTask.new(:all => "db:test:prepare") do |t|
t.libs << "test"
t.test_files = Rake::FileList[
'test/unit/**/*_test.rb',
'test/functional/**/*_test.rb',
'test/integration/**/*_test.rb'
].shuffle
t.verbose = true
end
end
end
Run: rake test: randomize: all
Имейте в виду, что в файле тесты будут по-прежнему выполняться в том порядке, в котором они появляются. Я предполагаю, что вы могли бы использовать тестовый модуль Monkey patch, чтобы учесть это.
Вы можете проверить «ZenTest 3.9.0: теперь еще больше зла» ( не могу сделать прямую ссылку, используйте кеш Google)
Added ability to set test execution order, defaults to :random. EVIL!