mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-10-31 20:27:11 +01:00 
			
		
		
		
	Addd test-fixtures docs from wiki
This commit is contained in:
		| @@ -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) | ||||
		Reference in New Issue
	
	Block a user
	 Phil Nash
					Phil Nash