Petitest
A minimal solid testing framework for Ruby.
Installation
Add this line to your application's Gemfile:
gem "petitest"
And then execute:
bundle
Or install it yourself as:
gem install petitest
Usage
Create your test file
Define a child class of Petitest::Test
with #test_xxx
methods.
require "petitest/autorun"
class ExampleTest < Petitest::Test
def test_addition
assert { 1 + 1 == 100 }
end
end
Run it as a Ruby script
Run your test file as a Ruby script:
ruby test/example_test.rb
PetitestTest
#test_one_plus_one_to_be_two
Counts:
1 tests
1 passes
0 failures
0 skips
Times:
Started: 2017-03-25T15:29:21.243918+09:00
Finished: 2017-03-25T15:29:21.244149+09:00
Total: 0.000231s
If any test failed, exit code 1 is returned, othewise 0.
echo $?
0
Run all tests
Require "rake/testtask"
and initialize Rake::TestTask
on your Rakefile like:
require "rake/testtask"
Rake::TestTask.new
Run test
rake task that you defined in the above code to run all tests:
rake test
Note that Rake::TestTask's default test file pattern is test/test*.rb
.
Assertions
Petitest provides only one assertion method, #assert
.
assert { foo }
If you need more assertions, use plugins like patitest-assertions.
Configuration
backtrace_filters
Mechanism for filter out unnecessary lines from error backtrace.
Each element must be able to respond to #===
method.
Petitest.configuration.backtrace_filters = [
-> (line) { line.start_with?("/path/to/petitest/lib") },
]
color
Enable colored output.
Petitest.configuration.color = true
color_scheme
Color scheme for colored output.
Petitest.configuration.color_scheme = {
detail: :cyan,
error: :red,
pass: :green,
skip: :yellow,
}
These color types are available on color scheme configuration:
:black
:blue
:bold
:cyan
:green
:magenta
:red
:white
:yellow
output
Output path for some subscribers.
Petitest.configuration.output = ::STDOUT
Petitest.configuration.output.sync = true
subscribers
Test event subscribers (test reporters are kind of subscribers).
Petitest.configuration.subscribers = [
::Petitest::Subscribers::DocomentReportSubscriber.new,
]
These subscribers are provided by default:
-
Petitest::Subscribers::DocumentReportSubscriber
(default) Petitest::Subscribers::JsonReportSubscriber
Petitest::Subscribers::ProgressReportSubscriber
Official Plugins
Here are some official plugins for Petitest:
- https://github.com/petitest/petitest-assertions
- https://github.com/petitest/petitest-dsl
- https://github.com/petitest/petitest-power_assert
- https://github.com/petitest/petitest-spec
- https://github.com/petitest/petitest-tap
For developers
Tree
TestPlan
|---TestGroup 1
| |---Test 1-1
| |---Test 1-2
| |---Test 1-3
| `---TestGroup1-1
| |---Test 1-1-1
| |---Test 1-1-2
| `---Test 1-1-3
|---TestGroup2
| |---Test 2-1
| |---Test 2-2
| `---Test 2-3
`---TestGroup3
|---Test 3-1
|---Test 3-2
|---Test 3-3
`---TestGroup3-1
|---Test 3-1-1
|---Test 3-1-2
`---Test 3-1-3
Order
- Test 1-1
- Test 1-2
- Test 1-3
- Test 1-1-1
- Test 1-1-2
- Test 1-1-3
- Test 2-1
- Test 2-2
- Test 2-3
- Test 3-1
- Test 3-2
- Test 3-3
- Test 3-1-1
- Test 3-1-2
- Test 3-1-3
Events
#before_running_test_plan(test_plan)
#before_running_test_group(test_group)
#before_running_test(test)
#after_running_test(test)
#after_running_test_group(test_group)
#after_running_test_plan(test_plan)