пятница, 19 февраля 2016 г.

Модульное тестирование в Ruby

Однажды во время учебы по одному из предметов было задание создать модульный тест для  двух методов calculate() и input().

Среди всех языков программирования мой выбор на Ruby со своей простотой и возможностями. Еще один плюс что не нужно устанавливать дополнительные фреймворки так и программы для модульного тестирования на ruby. Сам модуль тестирования встроен в ruby и подключается строкой

require "test/unit"


И так я написал класс и три метода которые я буду тестировать.
class SimpleNumber

  def initialize(x, acc)
  
  end

  def self.input(x,acc)
    @x = x.to_i
    @acc = acc.to_i
  end

  def self.calculate()
    ex =0 
    return @x if @x == -1
    
    for i in  1..@acc
    ex += (-1**i) * ((@x**i) / self.fact(i)) 
    end
    return ex
  end
  
  def self.fact(n)
  if n.to_i<= 1
    1
  else
    n.to_i * fact( n.to_i - 1 )
  end
  end

end
А вот это собственно и есть модуль где мы тестируем наши методы.
require_relative "simple_number"
require "test/unit"
 
class TestSimpleNumber < Test::Unit::TestCase

 
  def test_numbers
    
    SimpleNumber.input(10,6)
    assert_equal(-2863, SimpleNumber.calculate())
   
    SimpleNumber.input(10.0,6)
    assert_equal(-2863, SimpleNumber.calculate())
   
    SimpleNumber.input(100,100)
    assert_equal(-14154608721008799669375546308212763073288043, SimpleNumber.calculate())
   
  end
  
  def test_factorial
   
   assert_equal(1, SimpleNumber.fact(-1))
   assert_equal(120, SimpleNumber.fact(5.4))
   assert_equal(815915283247897734345611269596115894272000000000, SimpleNumber.fact(40))
  
  end
  
  def test_string 
   
   SimpleNumber.input("10",6)
   assert_equal(-2863, SimpleNumber.calculate())
   
   assert_equal(120, SimpleNumber.fact("5"))
    
  end
  

end
Я использовал лишь один метод для тестирования модуля это assert_equal() , этот метод сравнивает два значения и определяет правильно идет расчет в модуле или нет.
Вот результат выполнения данного тестирования:
Что бы прочитать полную документацию про модульное тестирование в Ruby перейдите по этой ссылке

Комментариев нет:

Отправить комментарий