Minitest - test suite with method level granularity

After the update, I found that the same few testing methods fail, so I would like to automate testing only those, and not all methods in all classes. I want to list every couple of class method (for example TestBlogPosts.test_publish, TestUsers.test_signup) and run them together as a set of tests. Either in the file or on the command line I don't care.

I know these methods for running several whole classes , but here I am looking for finer granularity. (Similar to what -n / pattern / does on the command line - to run a subset of the testing methods, but through a few classes.)

+1
source share
1 answer

You can discard minitest/autorunand challenge Minitest.runusing your own test.

Example:

gem 'minitest'
require 'minitest'
#~ require 'minitest/autorun' ##No!

#Define Test cases. 
#The `puts`-statements are kind of logging which tests are executed.
class MyTest1 < MiniTest::Test
  def test_add
    puts "call %s.%s" % [self.class, __method__]
    assert_equal(2, 1+1)
  end
  def test_subtract
    puts "call %s.%s" % [self.class, __method__]
    assert_equal(0, 1-1)
  end
end
class MyTest2 < MiniTest::Test
  def test_add
    puts "call %s.%s" % [self.class, __method__]
    assert_equal(2, 1+1)
  end
  def test_subtract
    puts "call %s.%s" % [self.class, __method__]
    assert_equal(1, 1-1)  #will fail
  end
end

#Run two suites with defined test methods.
Minitest.run(%w{-n /MyTest1.test_subtract|MyTest2.test_add/})  #select two specific test method

Result:

Run options: -n "/MyTest1.test_subtract|MyTest2.test_add/" --seed 57971

# Running:

call MyTest2.test_add
.call MyTest1.test_subtract
.

Finished in 0.002313s, 864.6753 runs/s, 864.6753 assertions/s.

2 runs, 2 assertions, 0 failures, 0 errors, 0 skips

When calling the following test:

Minitest.run(%w{-n /MyTest1.test_subtract/})  #select onespecific test method
puts '=================='
Minitest.run(%w{-n /MyTest2.test_add/})  #select one specific test method

then you get

Run options: -n /MyTest1.test_subtract/ --seed 18834

# Running:

call MyTest1.test_subtract
.

Finished in 0.001959s, 510.4812 runs/s, 510.4812 assertions/s.

1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
==================
Run options: -n /MyTest2.test_add/ --seed 52720

# Running:

call MyTest2.test_add
.

Finished in 0.000886s, 1128.0825 runs/s, 1128.0825 assertions/s.

1 runs, 1 assertions, 0 failures, 0 errors, 0 skips

Minitest.runuses the same options that you use on the command line. This way you can use a parameter -nwith your choice, for example. /MyTest1.test_subtract|MyTest2.test_add/.

You can define different tasks or methods with different Minitest.run-definition to define your test packages.

Caution: A non-downloadable test file cannot contain require 'minitest/autorun'.

0
source

Source: https://habr.com/ru/post/1620403/


All Articles