Я хочу выполнить модульные тесты Ruby (классы, которые наследуются от Test :: Unit :: TestCase) с IronRuby.
Я пытался выполнить полный файл с
Код C #:
var engine = Ruby.CreateEngine();
engine.Runtime.IO.RedirectToConsole();
engine.ExecuteFile("example.rb");
example.rb:
require 'test/unit'
puts 'test'
class ExampleTests < Test::Unit::TestCase
def test_pass
puts 'test pass'
assert_equal(1, 1, 'Test should work')
end
def test_fail
puts 'test fail'
assert_equal(2, 0, 'Test should fail')
end
end
Но это не запустило юнит-тест.
Это выводит только «тест».
Я ожидал того же поведения, что и при запуске «ruby example.rb».
Я делаю что-то неправильно?
Контекст:
У меня есть библиотека C ++, которая тестируется с Jruby над JNI.
Нам нужен интерфейс JNI только для jruby, и мы не можем отлаживать библиотеку с помощью jruby.
Поэтому идея состояла в том, чтобы заменить jruby на IronRuby, чтобы избавиться от интерфейса JNI.
У нас есть C # Wrapper вокруг библиотеки C ++, и именно здесь IronRuby входит в игру:
Мне нужен класс ruby, который может вызывать оболочку (то же самое было сделано с jruby для вызова интерфейса JNI).
Можно отладить оболочку C #, чтобы она работала и с IronRuby.
Я хочу выполнить каждый тест и получить результаты (достаточно знать, какой из них пройден, а какой — нет)
Мне нужно поведение при выполнении файла, потому что я не знаю имен классов или функций, и автозапуск тестов ruby находит все тесты в файле.
Я не эксперт по рубину. Пожалуйста, помогите мне запустить модульные тесты.
Спасибо за помощь.
Задача ещё не решена.
Других решений пока нет …