Я думал об этой самой вещи сегодня на работе. Я унаследовал тестовый проект, который поддерживался и обновлялся многими людьми в прошлом, и поэтому в настоящее время содержит довольно запутанную иерархию.
В попытке упростить дело я начал использовать следующую структуру:
Tests (Namespace)
-- Infrastructure (Folder)
---- general utility classes (common to all tests)
---- any other config
-- ClassATests (Folder)
---- ClassATestBase (base class for setup of common mock objects etc.)
---- ClassATestMethods (helper methods for the ClassATests)
---- ClassATests (main test class)
-- ClassBTests (Folder)
etc.
Пока я нашел этот подход полезным, так как он означает, что большая часть кода, который будет выполняться во время любого данного теста, находится в той же папке. Он также направлен на то, чтобы избежать сценария одного огромного класса TestMethods.
Возможно, это не самое элегантное из решений (извините, каламбур не предназначен!), Но сейчас оно работает для меня. Любые предложения приветствуются!