我正在使用MSTest,我想同时为测试类中的所有方法设置相同的测试类别,而无需单独为每个方法设置TestCategory属性.如何才能做到这一点?
最方便和最明显的方法是在类上设置TestCategory属性,但它只能应用于方法.
最终目标是在TFS签入的测试运行期间跳过集成测试.
当我将Visual Studio更新到最新版本时,我的一个测试项目停止运行测试并输出以下消息:
测试项目{}不引用任何.NET NuGet适配器.测试发现或执行可能不适用于此项目.建议在解决方案中的每个测试项目中引用NuGet测试适配器.
更新:我使用MS Test而不是像Nunit或Xunit这样的任何其他测试框架.
我知道MSTest不支持RowTest和类似的测试.
什么是MSTests用户怎么办?如何在没有RowTest支持的情况下生活?
我已经看过DataDriven测试功能,但听起来有太大的开销,是否有任何第三方补丁或工具允许我进行RowTest类似的测试MSTest?
我无法进行单元测试.
我有下一个错误:
您的项目未引用".NETFramework,Version = v4.6.2"框架.在项目文件的"TargetFrameworks"属性中添加对".NETFramework,Version = v4.6.2"的引用,然后重新运行NuGet还原.
在app.config:
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2"/>
</startup>
Run Code Online (Sandbox Code Playgroud)
在项目>属性>应用程序> TargetFramework(.NET Framework 4.6.2)中
我该如何解决?
我一直在努力争取这个,希望它会帮助别人.
虽然创建使用MSTEST单元测试我发现我在每个测试重复相同的码,并发现了几个方便的属性(的TestInitialize,TestCleanup,ClassInitialize,和ClassCleanup).
据推测,当您使用这些属性之一标记方法时,它应该自动执行(在每次测试之前,在每次测试之后,在所有测试之前,以及在所有测试之后).令人沮丧的是,这没有发生,我的测试失败了.如果从标有TestMethodattribute 的类中直接调用这些方法,则测试成功.显然他们不是自己执行的.
以下是我使用的一些示例代码:
[TestInitialize()]
private void Setup()
{
_factory = new Factory();
_factory.Start();
}
Run Code Online (Sandbox Code Playgroud)
那为什么不执行?
我意识到有许多老问题解决了直到2008年的Visual Studio版本的 NUnit v MSTest的一般问题(比如这个).
微软有第三版正确的历史.对于MSTest,那就是VS2010.
他们是用MSTest完成的吗?你会在新项目中使用它而不是NUnit吗?
我的具体关注点:
(我们使用ReSharper,因此测试运行者对我们来说不是问题.过去几年我们使用过NUnit.我们没有TFS.)
cruisecontrol.net nunit mstest visual-studio-2010 visual-studio
在这个单元测试中检查这么多东西有什么问题吗?:
ActualModel = ActualResult.AssertViewRendered() // check 1
.ForView("Index") // check 2
.WithViewData<List<Page>>(); // check 3
CollectionAssert.AreEqual(Expected, ActualModel); // check 4
Run Code Online (Sandbox Code Playgroud)
此测试的主要目标是验证返回正确的视图(检查2)并且它包含正确的数据(检查4).
我可以通过将其分成多个测试来获得任何收益吗?我一切都是为了做正确的事情,但如果它没有实际价值我就不会分手了.
我对单元测试很陌生,所以请保持温和.
我们有MSTest测试,可以按小时生产自动运行.其中一个测试标有[Ignore]属性,因为它还没有准备好在我们的生产环境中运行它.
现在我想在我的本地环境中启动该测试(仅),因为我的本地环境已准备好进行该测试.
我尝试通过单击测试代码左侧的ReSharper图标或单击Unit Test Sessions窗口中的Run Selected Tests图标来运行该测试,但没有任何反应.
我现在通过评论该[Ignore]线来修复它.但是现在我需要注意//在签入代码之前删除注释字符().
还有另一种方法可以暂时进行[Ignore]'d测试吗?
我在Microsoft视频中看到有关这些属性的Visual Studio更新2.但是,我找不到关于它们的任何其他信息,也无法使用它们构建项目.
有没有人知道这些属性或如何让它们工作?
[DataTestMethod]
[DataRow("a", "b")]
[DataRow(" ", "a")]
public void TestMethod1(string value1, string value2)
{
Assert.AreEqual(value1 + value2, string.Concat(value1, value2));
}
Run Code Online (Sandbox Code Playgroud) 我上周升级到Visual Studio 2017.使用MSTest v1的几个测试项目的解决方案起初看起来很好.大多数测试项目都执行测试.这是.NET Framework,而不是.NET Core.
但是,有一个项目我遇到了问题.这是一个集成测试项目,意味着它使用ChromeDriver和Selenium运行Web应用程序测试.该项目引用了NUnit,尽管该引用来自另一个项目引用.我实际上并没有使用NUnit作为我的测试框架.
尝试在该特定测试项目中运行任何测试时,这是错误:
Could not find test executor with URI 'executor://mstestadapter/v1'. Make sure that the test executor is installed and supports .net runtime version .
Test project {name} does not reference any .NET NuGet adapter. Test discovery or execution might not work for this project.
It's recommended to reference NuGet test adapters in each test project in the solution.
浏览https://docs.microsoft.com/en-us/visualstudio/releasenotes/vs2017-preview-relnotes#--visual-studio-2017-version-158-preview-4上的预览发行说明后,我找到了这个解决方案.(向下滚动到"......新功能......"然后再转到.NET Test Adapter Extension).它提到了这个突破性的变化(虽然它没有打破我的其他项目),但没有提到实际做什么来解决问题.
当然,长期来看,保持这种选择不受限制似乎不可行.所以我正在寻找如何进行的指导.
我已经试着看看我是否可以"快速"升级到MSTest v2,但是因为找不到System.Runtime 4.1.2而出现了问题.我尝试通过NuGet添加System.Runtime 4.3.0,但这并没有解决问题.