A software test fixture sets up a system for the software testing process by initializing it, thereby satisfying any preconditions the system may have. For example, the Ruby on Rails web framework uses YAML to initialize a database with known parameters before running a test. This allows for tests to be repeatable, which is one of the key features of an effective test framework. Test fixtures can be set up three different ways: in-line, delegate, and implicit.[^wk1] 1. **In-line** setup creates the test fixture in the same method as the rest of the test. While in-line setup is the simplest test fixture to create, it leads to duplication when multiple tests require the same initial data. 2. **Delegate** setup places the test fixture in a separate standalone helper method that is accessed by multiple test methods. 3. **Implicit** setup places the test fixture in a setup method which is used to set up multiple test methods. This differs from delegate setup in that the overall setup of multiple tests is in a single setup method where the test fixture gets created rather than each test method having its own setup procedures and linking to an external test fixture. [^wk1]: https://en.wikipedia.org/wiki/Test_fixture A *Test fixture* is analagous to the *Arrange* phase of Arrange-Act-Assert pattern (see [[Use the Arrange-Act-Assert pattern to structure automated test cases]]).