06. Тестове, TDD и MiniTest

06. Тестове, TDD и MiniTest

06. Тестове, TDD и MiniTest

29 октомври 2012

Днес

Преди това

Имате ли въпроси по втора задача?

Не забравяйте да ползвате форумите за да питате неща.

Въпроси към вас

Test-Driven Development

Test-Driven Development

demo

Test-Driven Development

framework

Невероятно прост "framework":

def ok(success, string = nil)
  return if success
  puts string if string
  puts caller.join("\n")
  exit(1)
end

Test-Driven Development

framework (2)

watchr

$ gem install watchr

watchr

примерен файл

watch('rat\.rb') do
  system 'clear'
  success = system 'ruby rat.rb'

  if success
    puts 'OK'
  else
    puts "Tests failed ;("
  end
end

Kernel#system

накратко

Демо

...лишън

Test-Driven Development

основен цикъл

Red-Green-Refactor

minitest

$ gem install minitest

xUnit

xUnit

основна терминология

minitest

прост пример

require 'minitest/unit'

class ExampleTest < MiniTest::Unit::TestCase
  def test_adding_two_and_two
    assert_equal 4, 2 + 2
  end

  def test_array_push_and_pop
    array = []
    array.push 1
    array.push 2

    assert_equal 2, array.pop
    assert_equal 1, array.pop
  end
end

MiniTest::Unit::TestCase

Проверки

assert test, message # Проверява, че test е истина
assert artists.include?('Sting'), 'Sting has a song'

assert_equal expected, actual, message # Проверява expected == actual
assert_equal 4, 2 + 2, 'Basic arithmetic'

assert_in_delta expected, actual, delta, message
assert_equal 3.1415, Math::PI, 0.0001

assert_raises(error, &block) # Очаква изключение
assert_raises(KeyError) { {}.fetch :baba }

Пускане на тестове

$ testrb something_test.rb

Код от лекцията

По време на лекцията написахме повечко код. Можете да намерите крайния резултат в този gist. Имайте предвид, че важното нещо бе процесът на писане, а не крайния резултат. Съответно, кодът е недовършен и не най-добрия възможен.

Въпроси