Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:
null
. null
. null
, как если бы это был массив. null
, как если бы это был массив. null
как будто это было значение Throwable. Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null
.
Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html
Если вы запустите тест с использованием граблей, он будет работать:
rake test:units TESTOPTS="-v"
Печать тестового имени является ответственностью TestRunner. Если Вы запускаете свои тесты из командной строки, можно определить-v опцию, для распечатывания имен тестового сценария.
пример:
ruby test_Foo.rb -v
Loaded suite test_Foo
Started
test_blah(TestFoo): .
test_blee(TestFoo): .
Finished in 0.007 seconds.
2 tests, 15 assertions, 0 failures, 0 errors
Это - то, что я использую в test_helper.rb
class Test::Unit::TestCase
# ...
def setup_with_naming
unless @@named[self.class.name]
puts "\n#{self.class.name} "
@@named[self.class.name] = true
end
setup_without_naming
end
alias_method_chain :setup, :naming unless defined? @@aliased
@@aliased = true
end
@@, искаженная переменная мешает ему повторно искажаться при выполнении его на нескольких файлах сразу; @@ названный мешает имени отображаться перед каждым тестом (непосредственно перед тем, как первое для выполнения).
1000vh
, более вероятно, будет работать на большие элементы.
– Nathan Powell
22 September 2016 в 16:13
Какую среду тестирования Вы используете? Тест/Единица?
я смотрел бы на RSpec, который обеспечит немного больше контекста для Ваших тестов. Можно также получить хороший отчет HTML, который похож на это:
Результат RSpec http://myskitch.com/robbyrussell/rspec_results-20070801-233809.jpg
Имел Вас, имел любые проваливающие тесты, определенный тест будет красным, и это расширилось бы до определенных строк, где тесту не удалось предоставить Вам больше видимости на том, почему неудавшийся тест и где необходимо надеяться решать проблему.
Определение в сообщении в блоге, должен иметь конкретный (установка (& блок), метод определяется в модуле Thoughtbot:: Должен иметь в context.rb., должен have.rb затем сделать, чтобы TestCase расширил тот модуль).
определение для чистого теста:: единица
# File test/unit/testcase.rb, line 100
def setup
end
, что Вы могли сделать,
def setup
log_test
end
private
def log_test
if Rails::logger
# When I run tests in rake or autotest I see the same log message multiple times per test for some reason.
# This guard prevents that.
unless @already_logged_this_test
Rails::logger.info "\n\nStarting #{@method_name}\n#{'-' * (9 + @method_name.length)}\n"
end
@already_logged_this_test = true
end
<час> редактирование
, если Вы действительно не хотите редактировать свои файлы, можно рискнуть вновь открыть тестовый сценарий и расшириться выполненный вместо этого:
class Test::Unit::TestCase
alias :old_run :run
def run
log_test
old_run
end
end
это должно работать (у меня нет рубина вокруг для тестирования, хотя)
<час>я сдаюсь! (в разочаровании)
я проверил, что код и направляющие на самом деле делают волшебство позади сцены, которая является, вероятно, почему переопределение выполнения не работает.
вещь: часть волшебства включает ActiveSupport:: CallBack и обратные вызовы создания для установки и разрушения.
то, что означает
class Test::Unit::TestCase
setup :log_test
private
def log_test
if Rails::logger
# When I run tests in rake or autotest I see the same log message multiple times per test for some reason.
# This guard prevents that.
unless @already_logged_this_test
Rails::logger.info "\n\nStarting #{@method_name}\n#{'-' * (9 + @method_name.length)}\n"
end
@already_logged_this_test = true
end
end
end
, должно определенно работать
, и на самом деле запущение тестов с ним действительно работает. то, где я смущен, - то, что это - первая вещь, которую я попробовал, и она перестала работать с той же ошибкой, которую Вы получили