Addd test-fixtures docs from wiki
This commit is contained in:
parent
d60b248409
commit
c22cfc4a95
@ -6,6 +6,7 @@ Before looking at this material be sure to read the [tutorial](tutorial.md)
|
||||
* [Assertion Macros](assertions.md)
|
||||
* [Logging Macros](logging.md)
|
||||
* [Supplying your own main()](own-main.md)
|
||||
* [Test fixtures](test-fixtures.md)
|
||||
|
||||
---
|
||||
|
||||
|
32
docs/test-fixtures.md
Normal file
32
docs/test-fixtures.md
Normal file
@ -0,0 +1,32 @@
|
||||
Although Catch allows you to group tests together as sections within a test case, it can still convenient, sometimes, to group them using a more traditional test fixture. Catch fully supports this too. You define the test fixture as a simple structure:
|
||||
|
||||
```c++
|
||||
class UniqueTestsFixture {
|
||||
private:
|
||||
static int uniqueID;
|
||||
protected:
|
||||
DBConnection conn;
|
||||
public:
|
||||
UniqueTestsFixture() : conn(DBConnection::createConnection("myDB")) {
|
||||
}
|
||||
protected:
|
||||
int getID() {
|
||||
return ++uniqueID;
|
||||
}
|
||||
};
|
||||
|
||||
int UniqueTestsFixture::uniqueID = 0;
|
||||
|
||||
TEST_CASE_METHOD(UniqueTestsFixture, "Create Employee/No Name", "[create]") {
|
||||
REQUIRE_THROWS(conn.executeSQL("INSERT INTO employee (id, name) VALUES (?, ?)", getID(), ""));
|
||||
}
|
||||
TEST_CASE_METHOD(UniqueTestsFixture, "Create Employee/Normal", "[create]") {
|
||||
REQUIRE(conn.executeSQL("INSERT INTO employee (id, name) VALUES (?, ?)", getID(), "Joe Bloggs"));
|
||||
}
|
||||
```
|
||||
|
||||
The two test cases here will create uniquely-named derived classes of UniqueTestsFixture and thus can access the `getID()` protected method and `conn` member variables. This ensures that both the test cases are able to create a DBConnection using the same method (DRY principle) and that any ID's created are unique such that the order that tests are executed does not matter.
|
||||
|
||||
---
|
||||
|
||||
[Home](../README.md)
|
Loading…
Reference in New Issue
Block a user