К сожалению, не существует нативной логики повторного повторного теста для mStest /vStest < /p>
Я пытаюсь реализовать пользовательскую логику, такую как: < /p>
Тест Часть: < /p>
static int testNum = 1;
[TestMethod]
public void RerunTestOnce_Test()
{
testNum = testNum + 1;
Console.WriteLine("Test started");
Assert.IsTrue(testNum == 3, $"Test Failed with number {testNum}");
}
< /code>
Этот тест должен сработать в первый раз, и пройти второй, когда тестовая охват 3. < /p>
up: это Синтетический пример для эмуляции сбоя при первом запуске. Реальные тесты сложны и имеют методы поиска пользовательского интерфейса и другую работу с системой и сетью, и нет никакой уверенности в том, что все будет хорошо во время больших и длинных тестовых наборов.
Существует особый метод для этого - reruntestonce () , называемый в TestCleanup:
[TestCleanup]
public void TestCleanup()
{
TestHelper.RerunTestOnce(TestContext, this);
}
< /code>
и здесь реализация Reruntestonce в классе Test Helper. p>
public static void RerunTestOnce(TestContext testContext, object testInstance)
{
if (testContext.CurrentTestOutcome == UnitTestOutcome.Failed)
{
var type = testInstance.GetType();
if (type != null)
{
var testMethod = type.GetMethod(testContext.TestName);
var initMethod = type.GetMethods().SingleOrDefault(m=>m.CustomAttributes.SingleOrDefault(a=>a.AttributeType.Name == "TestInitializeAttribute")!= null);
var cleanupMethod = type.GetMethods().SingleOrDefault(m => m.CustomAttributes.SingleOrDefault(a => a.AttributeType.Name == "TestCleanupAttribute") != null);
Console.WriteLine($"[WARNING] Method [{testMethod}] was failed in first attempt. Trying to rerun...");
try
{
initMethod.Invoke(testInstance, null);
testMethod.Invoke(testInstance, null);
}
catch
{
Console.WriteLine($"[ERROR] Method [{testMethod}] was failed in second attempt. Rerun finished.");
}
}
}
}
< /code>
Все в порядке, при прохождении второго метода попыток проходит, но в конце я вижу неудачное сообщение об ошибке и утверждаю сообщение об ошибке с первой попытки: < /p>
Test Failed - RerunTestOnce_Test
Message: Assert.IsTrue failed. Test Failed with number 2
Как и когда MSTest создает результат теста - возможно ли обновить результат теста после второй попытки последнего результата?
К сожалению, не существует нативной логики повторного повторного теста для mStest /vStest < /p> Я пытаюсь реализовать пользовательскую логику, такую как: < /p> Тест Часть: < /p> [code] static int testNum = 1;
[TestMethod] public void RerunTestOnce_Test() { testNum = testNum + 1; Console.WriteLine("Test started"); Assert.IsTrue(testNum == 3, $"Test Failed with number {testNum}");
} < /code> Этот тест должен сработать в первый раз, и пройти второй, когда тестовая охват 3. < /p> up: это Синтетический пример для эмуляции сбоя при первом запуске. Реальные тесты сложны и имеют методы поиска пользовательского интерфейса и другую работу с системой и сетью, и нет никакой уверенности в том, что все будет хорошо во время больших и длинных тестовых наборов. Существует особый метод для этого - reruntestonce () , называемый в TestCleanup: [TestCleanup] public void TestCleanup() { TestHelper.RerunTestOnce(TestContext, this); } < /code> и здесь реализация Reruntestonce в классе Test Helper. p> public static void RerunTestOnce(TestContext testContext, object testInstance) { if (testContext.CurrentTestOutcome == UnitTestOutcome.Failed) { var type = testInstance.GetType(); if (type != null) { var testMethod = type.GetMethod(testContext.TestName); var initMethod = type.GetMethods().SingleOrDefault(m=>m.CustomAttributes.SingleOrDefault(a=>a.AttributeType.Name == "TestInitializeAttribute")!= null); var cleanupMethod = type.GetMethods().SingleOrDefault(m => m.CustomAttributes.SingleOrDefault(a => a.AttributeType.Name == "TestCleanupAttribute") != null);
Console.WriteLine($"[WARNING] Method [{testMethod}] was failed in first attempt. Trying to rerun..."); try { initMethod.Invoke(testInstance, null); testMethod.Invoke(testInstance, null); } catch { Console.WriteLine($"[ERROR] Method [{testMethod}] was failed in second attempt. Rerun finished."); } } } } < /code> Все в порядке, при прохождении второго метода попыток проходит, но в конце я вижу неудачное сообщение об ошибке и утверждаю сообщение об ошибке с первой попытки: < /p> Test Failed - RerunTestOnce_Test Message: Assert.IsTrue failed. Test Failed with number 2 [/code] Как и когда MSTest создает результат теста - возможно ли обновить результат теста после второй попытки последнего результата?
К сожалению, для MStest/VStest нет встроенной логики повторного запуска теста.
Я пытаюсь реализовать такую собственную логику:
Test часть:
static int testNum = 1;
public void RerunTestOnce_Test()
{
testNum = testNum + 1;
Console.WriteLine(...
Я пытался решить вопрос с кодефом мой код давал неправильный ответ для тестового примера. но когда я проверил решение, код выглядел так, будто он имеет аналогичную логику и закодирован по-другому. Пожалуйста, помогите мне понять, почему это...
У меня есть функция-оболочка, которая принимает функцию, вызывающую вызов базы данных, возвращающую IEnumerable.
Этот тип T может быть любым из моих конкретный класс, который хранит возвращаемое целое число из базы данных.
Я заставил его работать,...
У меня есть функция-оболочка, которая принимает функцию, вызывающую вызов базы данных, возвращающую IEnumerable.
Этот тип T может быть любым из моих конкретный класс, который хранит возвращаемое целое число из базы данных.
Я заставил его работать,...