Reusable tests
It is generally accepted that reusability is not something that you should strive for in your tests. However, I have found that reusing tests is an interesting way to save time when you are testing a full process. Take for instance this piece of code:
[Test]
public void SuccessfullySavingTemplateWillShowConfirmation()
{
OpenNewTemplateDialog();
Type("TemplateName", "Template1");
ClickOkOnNewTemplate();
WaitForAjax();
AssertTextPresent("Template saved successfully", "Should have gotten a confirmation message");
}
[Test]
public void CannotAddTemplateWithDuplicateName()
{
//Create a template called "Template1"
SuccessfullySavingTemplateWillShowConfirmation();
CloseSavedTemplateSuccessConfirmation();
OpenNewTemplateDialog();
Type("TemplateName", "Template1");
ClickOkOnNewTemplate();
WaitForAjax();
AssertTextPresent("There is already a template called 'Template1', please choose another name.",
"Should warn when trying to create template with duplicate name");
}
Some of the methods are utility methods, but on the second test, the first line of code actually calls to another tests to do the initialization of the test. I can see this kind of stacking useful in cases where I would usually want to have orderred tests.

Comments
Comment preview