- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
不幸的是,MStest/VStest 没有本地测试重新运行逻辑
我正在尝试实现这样的自定义逻辑:
测试部分:
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}");
}
这个测试应该第一次失败,当 testNum 达到值 3 时,第二次通过。
UP:这是模拟首次运行失败的合成示例。真正的测试很复杂,有 UI 搜索方法和其他与系统和网络一起工作的东西,并且没有信心在一个大而长的测试套件中一切都会好起来。
为此有一个特殊的方法 - RerunTestOnce(),在 TestCleanup 中调用:
[TestCleanup]
public void TestCleanup()
{
TestHelper.RerunTestOnce(TestContext, this);
}
这里是测试助手类中 RerunTestOnce 的实现。在其中,我们使用 Reflection & TestContext 获取测试方法和初始化方法的名称,并再次运行它们:
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.");
}
}
}
}
一切正常,第二次尝试测试方法通过,但最后我看到失败的结果并断言第一次尝试的错误消息:
Test Failed - RerunTestOnce_Test
Message: Assert.IsTrue failed. Test Failed with number 2
MSTest 如何以及何时创建测试结果 - 是否可以在第二次尝试最后的结果后更新测试结果?
最佳答案
我想到了以下解决方案
public static void Retry(Action test, int retry = 10, int sleep = 0, [CallerMemberName] string testName = null)
{
int current = 1;
retry = Math.Max(1, Math.Min(retry, 10));
while (current <= retry)
{
try
{
test();
break;
}
catch (Exception ex) when (current < retry)
{
Debug.WriteLine("Test {0} failed ({1}. try): {2}", testName, current, ex);
}
if (sleep > 0)
{
Thread.Sleep(sleep);
}
current++;
}
}
用法
[TestMethod]
public void CanRollbackTransaction()
{
Helpers.Retry(() =>
{
var even = DateTime.Now.Second % 2 == 0;
Assert.IsTrue(even);
}, 3, 1000);
}
关于c# - MSTest/VSTest 重试(rerun)逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53430550/
美好的一天! 我有以下项目结构: Solution -My.Project -My.Project.Test --Resources ---mytest.file 在我的测试文件中,以下方法: [Te
我正在使用 MStest 运行单个测试用例,但找不到正确的命令 我试过: 1) mstest.exe/testcontainer:testproject.dll/test:MethodTest1 这将
我们正在运行每晚构建,最终使用 MsTest 框架运行我们所有的 UnitTest。 我们必须有 100% 的通过率,所以如果一个失败了,其他的就没有意义了;因此,我们希望在第一个失败的测试中停止执行
我有一些测试需要使用来自 excel 文件的外部数据。这些文件包含在测试项目中,在 Visual Studio 中,我编辑了测试设置文件 (Local.testsettings) 以部署数据文件。这使
我正在从命令行针对我们的测试程序集运行 MSTest: mstest/testcontainer:C:\dev\UnitTests\bin\Debug\UnitTests.dll 这工作正常,但我不希
有办法吗?我每次开始测试时都必须等待构建吗?我想从 Visual Studio 构建而不是从测试 谢谢 最佳答案 任何时候您的代码更改并且您运行测试时,它都会进行构建......所以从技术上讲,您可以
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我只是在构建后尝试执行一个 MSTest 项目,但由于某种原因,我得到了未满足的要求,即我的项目存在状态 system.MSTest.10.0。 我所做的只是添加一个构建步骤,选择 Runner 类型
我第一次尝试在当前项目中使用 opencover,并且刚刚让它与我的 mstest 项目一起使用。不过我遇到了一个问题,因为 opencover 输出 xml 似乎试图分析同一个程序集两次。另外值得注
我正在使用 VS2010 创建一个新的单元测试项目来测试我的解决方案。创建单元测试后,VS 创建了一个 .accessor 文件。我知道它用于帮助测试私有(private)或保护成员。但是我打开 .a
这是我看到的错误消息: The active Test Run was aborted because the execution process exited unexpectedly. Check
我有一个非常简单的 MSTest 单元测试项目,它间接依赖于两个版本的 MVC。 app.config 中的 assemblybinding 配置为重定向到 MVC v4 当我运行 mstest 测试
我们最近将测试从 NUnit 迁移到 MSTest,我正在努力让以前通过的测试运行。据我所知,MSTest 无法检测到 NLog 配置。 我的 App.config 中有我的 Nlog 配置,这不会导
在 NUnit 中,我们使用 TestFixtureSetUp MSTest 中的等效测试是什么? 谢谢 最佳答案 在这里你可以找到很好的表格,它并排显示 NUnit 和 MSTest 属性: htt
我的需要是在通过命令行中的 MsTest 运行时将自定义参数/参数传递给单元测试。参数必须是命令行参数,并且需要访问测试类或方法内的参数值。 最佳答案 MSTest 命令行不支持此选项。请寻找一种方法
我部分找到了带有参数的 mstest 解决方案: https://devnet.jetbrains.com/thread/471980 命令提示符(工作正常): dotcover analyse /T
我在使用 XML 数据源的 MSTest 方面遇到了一些问题。假设我有一个如下所示的 XML 文件: 1 Mike
如何在 JetBrains Rider 中为 MsTest 设置 .runsettings? 我试过 File | Settings | Build, Execution, Deployment |
我正在尝试通过 mstest 测试获得代码覆盖率。我正在使用 PartCover 2.2.0.36424。 问题在于真实的程序集,我的代码覆盖率为 0%(注意:所有测试都通过)。 在我创建的演示源的演
MSTest.TestAdapter 与 MSTest.TestFramework 之间的实际区别是什么?我什么时候需要哪个? 在 NuGet 描述中,您可以阅读: MSTest.TestAdapte
我是一名优秀的程序员,十分优秀!