是否有一个MS测试运行器可以更快
MS测试正在杀死我. 与Nunit相比,它是如此慢.我之所以坚持下去,是因为我需要能够轻松地将测试结果带入TF中. (另外,它与PEX一起效果更好,我也正在使用). 但是我真的希望它能更快.甚至更快的速度也很好. 是否有人为MS测试跑步者制作了比Visual Studio中嵌入的测试更快的测试测试? 解决方案 gallio 平台为mstest提供了测试适配器.然后,您可以使用任何支持Gallio的跑步者进行测试,包括 echo 或 icarus 和第三方跑步者如 td.net 或非GUI测试跑步者通常略快.因此,您可能需要尝试 echo echo 或 posh snap-in 其他解决方案 您应该能够将Nunit与一些自定义构建任务其他解决方案 testdriven.net可能是最快的. 然后将嵌入到Visual Studio的MSTest Runner. 我发现Resharper Test Runner比内置的跑步者慢,尤其是在解决方案很大的情
0 2023-05-23
编程技术问答社区
单位测试的速度太慢了?
Michael Feathers,在中有效地使用旧版代码,第13-14页提及: 进行1/10的单位测试 其次运行是一个慢单位测试... 如果[单位测试]不快速运行,则 不是单位测试. 我可以理解,如果一个人进行30,000个测试,为什么每秒1/10太慢,因为它需要接近一个小时才能运行.但是,这是否意味着一秒钟的1/11更好?不,不是真的(因为它只有5分钟的速度).因此,艰难的快速规则可能并不完美. 因此,当考虑单位测试的速度太慢时,也许我应该重述这个问题. 开发人员要等待单位测试套件完成多长时间? 举例说明测试速度.查看几个单元测试持续时间: 0.2637638 seconds 0.0589954 0.0272193 0.0209824 0.0199389 0.0088322 0.0033815 0.0028137 0.0027601 0.0008775 0.0008171 0.0007351 0.0007147 0.0005898 0.0004937 0.
2 2023-05-23
编程技术问答社区
MSTest: 单元测试HttpContext.SignoutAsync的注销情况
简单地将模拟httpcontext传递到控制器上下文,而单元测试注销功能将引发以下错误 httpcontext.signout +值不能为null(参数'Provider') var mockHttpContext = new Mock(); //设置控制器httpcontext _controller.ControllerContext.HttpContext = mockHttpContext.Object; //现在调用注销动作方法和测试结果 解决方案 如果您深入研究Sigoutasync代码的定义,则期望身份验证服务提供商不应为null. 因此,与嘲笑httpcontext一起,您还需要模拟将解决问题的服务提供商. //mock the Http Context along with Service provider var mockHttpContext = new Mo
10 2023-05-22
编程技术问答社区
如果不允许从通过测试行使的代码中创建文件,那么如何对这些方法进行测试?
我正在尝试从类似的测试项目中测试一种方法: [TestMethod] public void TestEmailGeneratedReport() { List recipients = new List(); recipients.Add("bclayshannon@hotmail.net"); recipients.Add("axx3andspace@male.edu"); recipients.Add("cshannon@PlatypiRUs.com"); bool succeeded = RoboReporterConstsAndUtils.EmailGeneratedReport(recipients); Assert.IsTrue(succeeded); } ...但是它炸毁了;我明白了," 找不到路径的一部分." ,当我从项目的主要表单的负载事件中这样称呼时,它可以正常工作:
0 2023-05-15
编程技术问答社区
Ms Test或NUnit?
为单位/集成测试选择Nunit与内置的MSTST有任何优势吗? 解决方案 它们非常相似.差异很微妙. Nunit具有用于参数化测试的测试箱; mstest没有. 您可以写 [TestCase(1, "one)] [TestCase(2, "two)] [TestCase(3, "three)] [TestCase(4, "four)] public void CanTranslate(int number, string expectedTranslation) { var translation = _sut.Translate(number); translation.Should().Be.EqualTo(expectedTranslation); } 而不是编写4个测试或在测试中使用周期.测试失败的错误消息将更加清晰,测试结果将始终方便地分组. Nunit往往更完整和灵活.例如,它带有一组凉爽的 例如 [Tes
2 2023-05-02
编程技术问答社区
对于.net单元测试,推荐什么样的测试数据方法/框架?
建议使用哪种测试数据方法/框架进行.NET单元测试?我在VS2010,C#,进行业务逻辑层测试. 通过方法我的意思是:创建数据库快照,按编程方式创建每次等等. 解决方案 有人会说,如果您使用数据库,那么您正在进行功能测试,而不是单元测试. 其他解决方案 这与数据库测试无直接相关.但是通常,当我们需要设置测试数据时,我们可以使用名为Nbuilder的库.它可以创建CALS的单个实例以及实例列表.它使用非常流利的界面,非常易于使用.我写过
0 2023-05-02
编程技术问答社区
如何编写测试来验证Entity Framework数据库第一模型
我有一个实体框架数据库第一个模型. 我想编写一个MSTST/NUNIT测试,以验证我的EDMX模型中定义的所有存储的Proc和表是否仍然有效. 与大型开发人员团队有些仅在存储过程中工作,而另一些则在C#中我想进行集成测试以验证/验证项目中的EF模型. 我在LINQ2SQL中进行了测试,以查找在存储过程调用上常见的属性,然后运行SQL查询以验证存储过程仍然存在. 我现在升级到EF6,我想在构建中保留类似的理智检查. 这就是我到目前为止所拥有的. var list = context.MetadataWorkspace.GetItems(DataSpace.CSpace); var badSp = new List(); foreach (var table in list) { if (!DoesTableExist(dbContext, table)) { badSp.Ad
4 2023-05-02
编程技术问答社区
tfs中的junit测试结果
如何使TFS 2010显示由第三方工具生成的JUNIT测试结果?如果可能不能,可能会有一种方法可以将JUNIT报告转换为Xunit/Nunit/MSTST报告.这也很棒!谢谢. 解决方案 为了在TFS-Build期间发布JUNIT测试,您可以使用
6 2023-05-02
编程技术问答社区
关于私有方法单元测试的问题
在mstest中,[Shadowing]属性可帮助您单位从另一个组件测试一种私人方法.这是相关链接: VS生成单元测试时使用的阴影属性是什么? 我的问题是: 应该单独测试私人方法吗? 将私人方法的登录器更改为internal只是为了使其用于其他测试/组装中的单元测试是一个好(?)吗? (使用InternalsVisibleTo) 如果私人方法通过称为"单位"测试的公共方法间接测试? 解决方案 不,不应测试私人方法.您的应用程序仅与公共API进行交互.因此,您应该在此互动中测试班级的预期行为.私有方法是内部逻辑实现的一部分.班级的用户不应该关心它的实施方式. 不,这不好.往上看.您应该仅测试公共API. 您应该仅测试公共方法.您不在乎公共方法是否会呼吁私人方法,或者在通过测试通过之前才会呼吁使用.如果测试失败,请修复插入.但是不要测试私人方法. 更新(如何定义测试内容): 理想情况下(在测试第一方法中)测试是您类的第一个用户.当您编写测试时,您会尝试想象用
8 2023-05-02
编程技术问答社区
在现有代码库中开始进行自动化集成/单元测试
背景:我们已经交出了一条非常大的代码库(140万行),该代码库主要在C#中.该应用程序主要由ASP.NET 2.0样式ASMX Web服务访问SQL Server 2008数据库中的数据以及各种XML文件.没有现有的自动测试.我们有一个自动化的夜间构建(cc.net). 我们想引入一定级别的自动化测试,但是在粒状级别的单位测试中对此代码进行了重构似乎不太可能.我们的第一个想法是找到一种构建自动测试的方法,这些测试只需使用给定的一组参数调用每个Web服务即可为我们提供一定程度的代码覆盖范围.似乎是通过一些自动测试获得最高代码覆盖量的最快方法.这甚至称为单位测试,还是将其视为其他? 如何隔离数据存储以获得一致的测试结果?是否有任何测试工具比其他测试工具更好? xunit? MS测试? Nunit? 任何使我们朝着正确方向开始的建议将不胜感激.谢谢 解决方案 我的公司一直在与我们的代码库(C#而非C#)进行类似的事情,总计约一百万行.这些步骤是这样的: 1)像您
0 2023-05-02
编程技术问答社区
整个系统的单元测试应该多久运行一次?
通常,我仍然非常一个单位测试新手. 顺便说一句,您也可以在Xunit.net等其他论坛上看到此问题, 因为这对我来说是一个重要的问题.我提前为我的 闲置 交叉发布;您的意见对我来说非常重要,不是每个人 在这个论坛中,也属于其他论坛. 我正在寻找一个大的十年旧遗产系统,该系统已有700多个单位测试 最近写的(700只是一个很小的开始).测试恰好是编写的 在mstest中,但这个问题适用于所有测试框架Afaik. 当我跑步时,通过VS2008"所有测试",最终计数仅为七个测试. 这大约是迄今为止编写的总测试的1%. 更多信息:ASP.NET MVC 2 RTM源代码,包括其单元测试, 可在Codeplex上使用;这些单元测试也用mstest编写 即使(无关的事实)布拉德·威尔逊(Brad Wilson)后来加入了ASP.NET MVC团队 作为高级程序员.所有2000年以上的测试都可以进行,而不仅仅是几个. 问题:鉴于AFAIK的单位测试目的是
0 2023-05-02
编程技术问答社区
在MSTest运行期间动态创建单元测试方法
是否有相当于MSTest的SuiteBuilder?到目前为止找不到一个. 我有一堆XML文件,每个文件都被视为映射到测试方法.由于其中有100个,并且要为每一种手动编写测试,这不是一个好主意. 因此,在Nunit中,您可以实现IsuiteBuilder,并使测试用例动态运行并显示为许多测试方法. 我正在寻找一种在mstest中做同样事情的方法. 我已经查看了dataSource属性,但是每次测试方法都符合1个数据源XML文件/CSV,从而迫使我编写100次测试方法.我还想将每个XML文件分开,不要将它们全部插入1个巨大的文件中,在这种情况下,它将变得无法实现. 有人尝试过或有任何建议吗? 解决方案 不是您要要求的,但是您可以使用,但我认为您无法轻易地使用Nunit中现有的.xml文件,并使用PEX与MSTest共享它们 - 如果这是您的意图. 其他解决方案 我已经做到了.这是您需要做的: 测试: [TestMethod] [De
2 2023-05-02
编程技术问答社区
在没有Visual Studio的情况下运行SpecFlow测试
我希望QA团队能够运行SpecFlow测试. 我希望他们能够更改价值并附加更多场景. 这些附加的方案将具有匹配的步骤定义,因此它们只需要修改功能. QA团队无法访问Visual Studio. 是否可以在不使用Visual Studio的情况下实现此目标? 我们目前正在使用MS测试,但是如果这会有所帮助,我们愿意使用Nunit. 解决方案 是的 - 有一种"简单"的方式. 由于SpecFlow仅在.feature文件中从文本中生成测试,因此您可以使用您选择的工具的命令行运行器. SpecFlow还带有命令行版本Specflow.exe,您可以将它们链接在一起,不仅可以生成和运行测试,还可以产生一个不错的测试报告.视觉工作室之外的所有内容. 我在这里写了这一点; http://www.marcusoft.net/2010/2010/2010/12/specflowexe-andsefexe-and-mstest.html 在简单的逐步文章中.
4 2023-05-02
编程技术问答社区
VS 2013 MSTest vs nUnit vs xUnit
我意识到这个话题有很多问题,但是我何故没有​​找到解决我需求的问题. 我的团队正在寻求启动自动化单元测试我们的应用程序.我们以前从未做过,团队中没有人对此有很多经验.我被要求研究并找到一个自动化单元测试的框架.到目前为止,我将选择范围缩小到 mstest,Nunit和Xunit . 在整个Internet上,我都阅读了有关MSTest的负面评论,但这似乎是我目的最方便的工具. 1)我们的应用程序是.NET 2)我们使用许可与IDE进行整个团队的发展. 3)源控制是团队基金会服务器2010 4)我们计划将CI/CD集成为软件交付过程的一部分. 我觉得 mstest 将其集成到此设置中,并为我们提供了最干净的界面. nunit 或 xunit mstest 是否有显着优势? 解决方案 我有偏见,因为我在Nunit上工作,但是Nunit或Xunit的优点是,这两个框架都提供了更多功能,例如数据驱动测试,并行执行和许多高级功能. 也就是说,
6 2023-05-02
编程技术问答社区
同时使用MSTest和NUnit?
阅读有关Mstest和Nunit的信息,我无法真正决定在项目中使用什么.我们使用TFS 2008和VS2010. 我喜欢Mstest,因为它将其集成到VS2010,连续集成和代码覆盖范围报告中. 我喜欢Nunit,因为它允许以良好,可读的方式制定复杂的声明. 绊脚石 http://alsagile.com/archive/2010/03/09/stop-thep-the-war-between-nunit-and-nunit-and-mstest-mstest-mstest-make-them.aspx 我问社区:有可能两者都使用? 我还考虑坚持使用MSTest并使用 解决方案 我个人不喜欢混合两个框架的想法,如文章您是指. 在两个测试框架下进行单元测试运行的可能条件可能是您不需要或无法在连续的集成服务器上安装Visual Studio. 只是为了澄清, mstest 不是汇编. 要使您的单元测试在两个框架下运行,您需要定义一个构建常数(此处NUNI
0 2023-05-02
编程技术问答社区
为什么在没有使用async/await关键字时,异步单元测试会失败?
根据此讨论,以下两种方法之间没有区别: public async Task Foo() { await DoSomethingAsync(); } public Task Foo() { return DoSomethingAsync(); } 实际上,对于非常简单的方法来说,没有异步/等待关键字的调用,因为它们删除了一些开销. 但是,这显然并不总是在单位测试中起作用. mstest [TestClass] public class AsyncTest { [TestMethod] public async Task Test1() { await Task.Delay(0); } [TestMethod] public Task Test2() { return Task.Delay(0); } } nunit [TestFixtur
0 2023-05-02
编程技术问答社区
在Visual Studio 2010中运行具有代码覆盖率的NUnit测试
我们最近从Visual Studio 2008升级到Visual Studio2010.作为代码基础的一部分,我们进行了一系列Nunit测试.我们希望能够在Visual Studio中运行这些单元测试,但是启用了代码覆盖范围.我们有弹奏者,因此可以在Visual Studio中运行测试,但是它不允许代码覆盖工具来完成其操作并生成覆盖范围统计信息. 有什么办法可以完成这项工作,或者我们必须将测试转换为MSTST? 编辑:我们已经尝试了建议的工具: testdriven.net 这可以在Visual Studio中运行Nunit测试,甚至可以与代码覆盖范围一起使用,但还包括作为覆盖组件的一部分的测试.似乎没有一种排除测试的方法,但包括正在测试的组件(我们的测试与他们测试的代码不同).我们也不真的想花费额外的2000英镑,这将花费我们为整个团队获得testdriven.net. Gallio 这无效.为了获得覆盖范围的输出,需要在Visual Studio测试跑步者
2 2023-05-02
编程技术问答社区
如何将NUnit测试集成到TFS 2010构建中
将Nunit测试集成到TFS 2010中的最佳方法是什么?是通过通用测试还是有更好的方法来运行它们? 理想情况下,我想拥有一个每个测试组件的一个通用测试的粒度,并有一种方法可以在TFS构建报告中表现出结果. 解决方案 您可以从命令行因此,您可以通过(工作流)构建模板自动化这些测试. 由于TFS 2010还没有很多自定义构建活动,因此您可以编写自己的自定义构建活动,以确保它与TFS构建报告更好地集成. 在这里您可以找到一些有关编写自定义构建活动的信息. 另一种方法是通过Visual Studio创建单元测试.这些测试将在执行构建时自动运行. 其他解决方案 截至目前(2011年10月),最简单的方法可能是通过Nunit活动,可以在社区tfs构建扩展. 其他解决方案 ian Battersby写了一本很棒的教程如何为Visual Studio 2010设置Nunit测试. 基本上,您需要: 下载他的构建工作流模板并设置为构建定义 安装 n
4 2023-05-02
编程技术问答社区
在VS2010中使用MS Test ClassInitialize()和TestInitialize(),而不是NUnit
我已经将Nunit与VS2008一起使用,现在正在适应VS2010的MSTST.我曾经能够在testSetup()中创建一个对象并在testCleanup()中处理它,并在每次在Nunit中运行测试方法时创建的对象,从而阻止我在每种测试方法中重复代码. 这是不可能的吗?我使用classInitialize和classCleanup以及TestInitialial和testCleanup属性发现的示例仅显示如何写入控制台.没有任何详细使用这些属性. 解决方案 这是一个使用testInitialize和testCleanup的简单示例. [TestClass] public class UnitTest1 { private NorthwindEntities context; [TestInitialize] public void TestInitialize() { this.context = new Northwin
0 2023-05-02
编程技术问答社区
NUnit没有找到汇编中的测试
我继承了一个带有mstest的组件,但是这些测试是使用构建机上使用Nunit-Console进行的(不确定其工作原理).因此,我决定对其进行整理并将其更改为适当的Nunit测试,但是现在Nunit-Console(或GUI)找不到任何测试.他们使用Resharper Test Runner可以很好地运行.知道什么可能缺少? 解决方案 感谢大家的帮助.升级到最新的Nunit框架解决了问题(您建议的所有明显的事情都可以). Frederik Gheysels,您也可以尝试一下. 其他解决方案 检查: 班级是公开的吗? 它是否具有公共参数构造函数(例如,如果您不指定任何其他构造函数,则默认的构造函数) 它是否具有[TestFixture]属性? 每个测试是公开的吗? 每个测试都有[Test]属性吗? 每个测试无需参数? 我相信Nunit的一些版本能够根据其名称找到测试,例如TestFooBarBaz()没有[Test]属性,但我不知道现在的状态 -
0 2023-05-02
编程技术问答社区