У меня есть следующие настройки для запуска моих тестов параллельно (для Selenium тестов):Как добавить не-тест-метод в качестве теста во время выполнения теста в MSTest?
[TestClass]
public class ParallelTests
{
[TestMethod]
public void TestAllParallel()
{
var testActions = Assembly.GetExecutingAssembly().GetTypes()
.Where(t =>
t.GetCustomAttribute<CompilerGeneratedAttribute>() == null &&
t.GetCustomAttribute<TestClassAttribute>() != null)
.Select(t => new Action(() => RunTest(t)))
.ToArray();
System.Threading.Tasks.Parallel.Invoke(testActions);
}
private static void RunTest(Type test)
{
var instance = Activator.CreateInstance(test);
ExecuteTestMethods(instance);
}
private static void ExecuteTestMethods(object instance)
{
var testMethods = instance.GetType().GetMethods()
.Where(m =>
m.GetCustomAttribute<TestMethodAttribute>(false) != null &&
m.GetCustomAttribute<IgnoreAttribute>(false) == null)
.ToArray();
foreach (var methodInfo in testMethods)
{
methodInfo.Invoke(instance, null);;
}
}
}
Это прекрасно работает, хотя результат протокол испытаний на моем сервере Дженкинс только показывает, что один тест запуска. Я хотел бы видеть в отчете все тесты, которые были выполнены TestAllParallel()
.
Это можно сделать? Я думаю, что, возможно, можно было бы добавить метод в качестве теста для MSTest во время выполнения.
Я не думаю, что у mstest есть метод для добавления тестов во время выполнения. Вы могли бы создать отдельный файл trx для своих тестов (генерируя файл в ваших методах), а затем плагин mstest в Jenkins подумает, что он был выведен из MSTest. –
Возможно, вы можете попытаться проверить покрытие кода для самого тестового кода (вместо проверяемого кода). Хотя я не уверен, как это сделать в jenkins & mstest. –
Почему вы выполняете все свои тесты самостоятельно и не поручаете вашему серверу Jenkins сделать это за вас? – silver