chore: add GUT test framework
This commit is contained in:
78
addons/gut/documentation/docs/Inner-Test-Classes.md
Normal file
78
addons/gut/documentation/docs/Inner-Test-Classes.md
Normal file
@@ -0,0 +1,78 @@
|
||||
# Inner Test Classes
|
||||
|
||||
You can define test classes inside a test script that will be treated as test scripts themselves. This allows you to create different contexts for your tests in a single script. These Inner Classes have their own `before_all`, `before_each`, `after_each`, and `after_all` methods that will be called. Only the methods defined in the class are used, the methods defined in the containing script will not be called.
|
||||
|
||||
The Inner Classes must also extend `GutTest` and their constructor cannot take any parameters. The Classes will be loaded and ran in the order they are defined _after_ all the tests in the containing script are run. If the script does not contain any tests then only the Inner Classes will be listed in the output.
|
||||
|
||||
The order the tests are run are not guaranteed to be in the same order they are defined (I don't know why yet).
|
||||
|
||||
Inner Classes are parsed out of the script by looking for a classes that start with `'Test'` and also extend `test.gd`. You can change the name that Gut looks for using the `inner_class_prefix` property.
|
||||
|
||||
## Example
|
||||
Given the following test script defined at `res://test/unit/some_example.gd`
|
||||
```
|
||||
extends GutTest
|
||||
|
||||
func before_all():
|
||||
gut.p('script: pre-run')
|
||||
|
||||
func before_each():
|
||||
gut.p('script: setup')
|
||||
|
||||
func after_each():
|
||||
gut.p('script: teardown')
|
||||
|
||||
func after_all():
|
||||
gut.p('script: post-run')
|
||||
|
||||
func test_something():
|
||||
assert_true(true)
|
||||
|
||||
class TestClass1:
|
||||
extends GutTest
|
||||
|
||||
func before_all():
|
||||
gut.p('TestClass1: pre-run')
|
||||
|
||||
func before_each():
|
||||
gut.p('TestClass1: setup')
|
||||
|
||||
func after_each():
|
||||
gut.p('TestClass1: teardown')
|
||||
|
||||
func after_all():
|
||||
gut.p('TestClass1: post-run')
|
||||
|
||||
func test_context1_one():
|
||||
assert_true(true)
|
||||
|
||||
func test_context1_two():
|
||||
pending()
|
||||
```
|
||||
|
||||
Gut will generate this following when running the test script.
|
||||
|
||||
```
|
||||
/-----------------------------------------
|
||||
Running Script res://test/unit/some_sample.gd
|
||||
-----------------------------------------/
|
||||
script: pre-run
|
||||
* test_something
|
||||
script: setup
|
||||
PASSED:
|
||||
script: teardown
|
||||
|
||||
/-----------------------------------------
|
||||
Running Class [TestClass1] in res://test/unit/some_sample.gd
|
||||
-----------------------------------------/
|
||||
TestClass1: pre-run
|
||||
* test_context1_two
|
||||
TestClass1: setup
|
||||
Pending
|
||||
TestClass1: teardown
|
||||
* test_context1_one
|
||||
TestClass1: setup
|
||||
PASSED:
|
||||
TestClass1: teardown
|
||||
TestClass1: post-run
|
||||
```
|
||||
Reference in New Issue
Block a user