What if you had a test case that looked like this? (Assuming a shape-drawing application such as Microsoft Visio...)
Logical.Projects.CreateNewProject();
Point rectangleStart = DataManager.ScenePointProvider.GetNextValue();Point rectangleEnd = DataManager.ScenePointProvider.GetNextValue();Logical.SceneElements.CreateRectangle(rectangleStart, rectangleEnd);
Point circleCenter = DataManager.ScenePointProvider.GetNextValue();Point circleRadius = DataManager.DoubleProvider.GetNextValue();Logical.SceneElements.CreateCircle(circleCenter, circleRadius);Logical.SceneElements.SelectAll();
Logical.Fill.Color = DataManager.FullSpectrumColorProvider.GetNextValue();Logical.Stroke.Color = DataManager.FullSpectrumColorProvider.GetNextValue();
Logical.SceneElements.Copy();Logical.SceneElements.Paste();
Note that this test case:
Writing one test that stands in for several similar tests, writing that test early in the feature development process rather than late, and modifying that test only when the feature undergoes semantic changes: this is our vision for changing the way we test. Now let me explain the technology we are building to help us reach that vision.