Rename REAMDE to README.md
[nit.git] / src / testing / README
diff --git a/src/testing/README b/src/testing/README
deleted file mode 100644 (file)
index 772ec38..0000000
+++ /dev/null
@@ -1,162 +0,0 @@
-# Test unit generation and execution for Nit.
-
-In Nit, unit testing can be achieved in two ways:
-
-* using `DocUnits` in code comments
-* using `TestSuites` with test unit files
-
-DocUnits are executable pieces of code found in the documentation of modules,
-classes and properties.
-They are used for documentation purpose, they should be kept simple and illustrative.
-More advanced unit testing can be done using TestSuites.
-
-TestSuites are test files coupled to a tested module.
-They contain a list of test methods called TestCase.
-
-## Working with `DocUnits`
-
-With DocUnits, executable code can be placed in comments of modules, classes and properties.
-The execution can be verified using `assert`
-
-Example with a class:
-
-       module foo
-
-       #    var foo = new Foo
-       #    assert foo.bar == 10
-       class Foo
-               var bar = 10
-       end
-
-Everything used in the test must be declared.
-To test a method you have to instanciate its class:
-
-       module foo
-
-       #    var foo = new Foo
-       #    assert foo.bar == 10
-       class Foo
-               #    var foo = new Foo
-               #    assert foo.baz(1, 2) == 3
-               fun baz(a, b: Int) do return a + b
-       end
-
-`nitunit` is used to test Nit files:
-
-       $ nitunit foo.nit
-
-## Working with `TestSuites`
-
-TestSuites are Nit files that define a set of TestCase for a particular module.
-
-The test suite module must be declared using the `test_suite` annotation.
-The structure of a test suite is the following:
-
-       # test suite for module `foo`
-       module test_foo is test_suite
-
-       import test_suite # import the `TestSuite` class and the `test_suite` annotation
-       import foo # can be intrude to test private things
-
-       class TestFoo
-               super TestSuite
-
-               # test case for `foo::Foo::baz`
-               fun test_baz do
-                       var subject = new Foo
-                       assert subject.baz(1, 2) == 3
-               end
-       end
-
-Test suite can be executed using the same `nitunit` command:
-
-       $ nitunit foo.nit
-
-To be started automatically with nitunit, the module must be called `test_`
-followed by the name of the module to test.
-So for the module `foo.nit` the test suite will be called `test_foo.nit`.
-Otherwise, you can use the `-t` option to specify the test suite module name:
-
-       $ nitunit foo.nit -t my_test_suite.nit
-
-`nitunit` will execute a test for each method named `test_*` in a class named `Test*`
-so multiple tests can be executed for a single method:
-
-       class TestFoo
-               super TestSuite
-
-               fun test_baz_1 do
-                       var subject = new Foo
-                       assert subject.baz(1, 2) == 3
-               end
-
-               fun test_baz_2 do
-                       var subject = new Foo
-                       assert subject.baz(1, -2) == -1
-               end
-       end
-
-`TestSuites` also provide methods to configure the test run:
-
-`before_test` and `after_test`: methods called before/after each test case.
-They can be used to factorize repetitive tasks:
-
-       class TestFoo
-               super TestSuite
-
-               var subject: Foo is noinit
-
-               # Method executed before each test
-               redef fun before_test do
-                       subject = new Foo
-               end
-
-               fun test_baz_1 do
-                       assert subject.baz(1, 2) == 3
-               end
-
-               fun test_baz_2 do
-                       assert subject.baz(1, -2) == -1
-               end
-       end
-
-When using custom test attributes, a empty init must be declared to allow automatic test running.
-
-`before_module` and `after_module`: methods called before/after each test suite.
-They have to be declared at top level:
-
-       module test_bdd_connector
-
-       import test_suite
-       import bdd_connector
-
-       # Testing the bdd_connector
-       class TestConnector
-               super TestSuite
-               # test cases using a server
-       end
-
-       # Method executed before testing the module
-       redef fun before_module do
-               # start server before all test cases
-       end
-
-       # Method executed after testing the module
-       redef fun after_module do
-               # stop server after all test cases
-       end
-
-## Generating test suites
-
-Write test suites for big modules can be a pepetitive and boring task...
-To make it easier, `nitunit` can generate test skeletons for Nit modules:
-
-       $ nitunit --gen-suite foo.nit
-
-This will generate the test suite `test_foo` containing test case stubs for all public
-methods found in `foo.nit`.
-
-Useful options with `--gen-suite`:
-
-* `--private`: also generate tests for protected and private methods
-* `--force`: force generation of the skeleton (existing test suite will be overwritten)