This method provides Data-Driven-Test functionality.
Define test data in the test code.
@overload data(label, data)
@param [String] label specify test case name. @param data specify test data. @example data(label, data) data("empty string", [true, ""]) data("plain string", [false, "hello"]) def test_empty?(data) expected, target = data assert_equal(expected, target.empty?) end
@overload data(data_set)
@param [Hash] data_set specify test data as a Hash that key is test label and value is test data. @example data(data_set) data("empty string" => [true, ""], "plain string" => [false, "hello"]) def test_empty?(data) expected, target = data assert_equal(expected, target.empty?) end
@overload data(&block)
@yieldreturn [Hash] return test data set as a Hash that key is test label and value is test data. @example data(&block) data do data_set = {} data_set["empty string"] = [true, ""] data_set["plain string"] = [false, "hello"] data_set end def test_empty?(data) expected, target = data assert_equal(expected, target.empty?) end
# File lib/test/unit/data.rb, line 55 def data(*arguments, &block) n_arguments = arguments.size case n_arguments when 0 raise ArgumentError, "no block is given" unless block_given? data_set = block when 1 data_set = arguments[0] when 2 data_set = {arguments[0] => arguments[1]} else message = "wrong number arguments(#{n_arguments} for 1..2)" raise ArgumentError, message end current_data = current_attribute(:data)[:value] || [] attribute(:data, current_data + [data_set]) end
This method provides Data-Driven-Test functionality.
Load test data from the file. This is shorthand to load test data from file. If you want to load complex file, you can use {#data} with block.
@param [String] file_name full path to test data file.
File format is automatically detected from filename extension.
@raise [ArgumentError] if file_name
is not supported file
format. @see Test::Unit::Data::ClassMethods::Loader#load
@example Load data from CSV file
load_data("/path/to/test-data.csv") def test_empty?(data) assert_equal(data["expected"], data["target"].empty?) end
# File lib/test/unit/data.rb, line 90 def load_data(file_name) loader = Loader.new(self) loader.load(file_name) end