#c# #.net #visual-studio #mstest
#c# #.net #visual-studio #mstest
Вопрос:
Я настраиваю набор UnitTest с использованием MSTest для существующего приложения.
Приложение поддерживает две разные базы данных (SQLServer и MSAccess), поэтому мы хотим, чтобы каждый модульный тест выполнялся для обеих баз данных.
Я вроде бы достиг этой функциональности с помощью следующей конструкции класса
namespace SQLServer {
[TestClass] public class SQLServer : TestCases { }
}
namespace MSAccess {
[TestClass] public class MSAccess : TestCases { }
}
public abstract partial class TestCases {
//Tests for Module1
[TestMethod] public void Module1_Test1() { }
}
public abstract partial class TestCases {
//Tests for Module2
[TestMethod] public void Module2_Test1() { }
}
Это работает более или менее так, как ожидалось, но, конечно, это не очень приятно, потому что все TestMethod
s должны быть в одном классе. Недостатком также является то, что два TestMethod
s для разных модулей не могут иметь одно и то же имя, что делает имена методов излишне длинными.
Однако моя главная проблема заключается в том, что я теряю группировку TestMethod
s по модулю. Группировка в Test Explorer, которую я достигаю с помощью этого:
UnitTestProject (Project name)
UnitTestProject.SQLServer (Namespace name)
SQLServer (Class name)
Module1_Test1 (Function name)
Module2_Test1
UnitTestProject.MSAcccess
MSAccess
Module1_Test1
Module2_Test1
Чего я на самом деле хочу, так это:
UnitTestProject
SQLServer
Module1
Module1_Test1
Module2
Module2_Test1
MSAccess
Module1
Module1_Test1
Module2
Module2_Test1
Есть ли способ добиться этого?
Ответ №1:
Используйте TestCategory
атрибут и убедитесь, что ваши тесты сгруппированы по признакам в окне обозревателя тестов.
Комментарии:
1. Похоже, это группирует их только по признаку. При группировке по признакам каждый тест существует дважды в каждом признаке, потому что они наследуются двумя базовыми классами. Он не дает группировку как по типу DB, так и по TestCategory