草庐IT

unit-testing

全部标签

c# - 内部异常的单元测试

我正在使用VisualStudio的集成框架编写一些单元测试。我需要编写一些测试用例,这些用例在抛出适当的异常时通过。问题是我需要测试的异常是嵌套在更一般的异常中的内部异常。是否有一些简单的解决方案,或者我是否需要扩展整个功能。我目前正在使用[ExpectedException]属性,但在这种情况下它不会有太大用处。我也很好奇当我们使用[ExpectedException]时会发生什么,同时我们在测试本身中也有一些Assert逻辑。条件是否被评估(抛出异常并且Assert语句被证明是有效的)或测试是否在抛出正确的异常后立即通过? 最佳答案

c# - 带参数的 Nunit 测试设置方法

我们可以有一个带参数的测试设置方法吗?我需要为夹具中的每个测试进行不同的设置。我们是否有一些(或类似的方式)作为假设的想法:[SetUp][Argument("value-1")][Argument("value-2")][Argument("value-3")]publicvoidInitializeTest(stringvalue){//setenvvarwithvalue} 最佳答案 可以使用带有参数的TestFixture属性来完成。如果类中的所有测试都依赖于相同的参数,这就是方法。该类需要一个构造函数,该构造函数具有传递给

c# - Visual Studio 单元测试在 TFS 构建上运行速度较慢

我的项目有1000多个单元测试,在本地机器上,所有测试都在不到10秒的时间内完成。但是,当它们在TFSBuild上运行时,某些测试的运行速度明显低于其他测试。其中3个在大约1-2分钟内运行,其他4个在5-30秒内运行,而其他则在几分之一秒内运行。我注意到所有那些较慢的测试都使用来自MicrosoftFakes的假货,并且每个测试都是同类中第一个运行的。但是很多其他测试也使用假货(有些更密集)并定期运行。我想知道是什么导致了这种放缓,我该如何解决。编辑:我注意到每个较慢的测试都在无模拟测试之后运行。也许这种减速是由ShimsContext的初始化引起的。在我的测试类中,ShimsCont

c# - 调试由于 StackOverflow 异常而失败的单元测试

每当单元测试由于StackOverflowException而失败时,单元测试过程会立即退出-找出发生了什么(据我所知)的唯一方法是调试单元的故障转储按照此处找到的步骤获得的测试过程CollectingUser-ModeDumps获取在抛出StackOverflowException时正在运行的单元测试的名称的最简单方法是什么?即使在调试单元测试时,我也很难找到当前单元测试的名称,因为它位于堆栈底部,而VisualStudio不会在调试窗口中显示整个堆栈,因为它太大了。有没有办法在不收集和调试故障转储的情况下找出哪个单元测试失败? 最佳答案

c# - 寻找具有广泛单元测试的*小型*、开源、c# 项目

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找书籍、工具、软件库、教程或其他场外资源的问题对于StackOverflow来说是偏离主题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,请描述问题以及迄今为止为解决该问题所做的工作。关闭8年前。Improvethisquestion(我问了this问题,但没有得到太多回应。建议我就C#提出同样的问题。)我是一名VB.NET开发人员,几乎没有C#经验(是的,我知道我需要用C#编写更多代码),正在寻找能够展示高单元测试覆盖率的小型开源项目来学习。我正在寻找小型项目,因为我不想为了更

c# - 需要在单元测试中向请求添加自定义 header

通过在线查找一些代码,我终于能够让HttpContext.Current不为空。但是我仍然无法在单元测试中向请求添加自定义header。这是我的测试:[TestClass]publicclassTagControllerTest{privatestaticMock>Service{get;set;}privateTagControllercontroller;[TestInitialize]publicvoidThingServiceTestSetUp(){Tagtag=newTag(1,"people");Responseresponse=newResponse();response

c# - 如何在单元测试中为并发建模?

我对单元测试还很陌生,目前正在尝试使用VisualStudio的测试工具。我的问题是如何在这些测试中定义有关并发行为的断言。例如。上课BoundedChan实现有界channel,我如何指定像这样的测试“channel.Send不会阻止”或“如果超出channel的容量,channel.Send将阻塞直到读取值”是否有一个优雅的解决方案来编写这些断言? 最佳答案 不幸的是,并发性仍然是单元测试的一个领域,很难轻松构建。这不是一个简单的问题,仍然需要你在测试中实现一些自己的同步和并发逻辑。对于您提供的示例,可能无法编写最终证明某个方法

c# - 单元测试异步操作

我想对一个执行异步操作的方法进行单元测试:Task.Factory.StartNew(()=>{//methodtotestandreturnvaluevarresult=LongRunningOperation();});我在我的单元测试(用c#编写)中stub了必要的方法等,但问题是在我断言测试之前异步操作没有完成。我该如何解决这个问题?我应该创建TaskFactory的模拟或任何其他技巧来对异步操作进行单元测试吗? 最佳答案 您必须有某种方法来伪造任务创建。如果您将Task.Factory.StartNew调用移动到某个依赖项

c# - 如何模拟 Excel VSTO 插件中的行?

我正在尝试将模拟的Range(包含具有值的单元格)放入新Range的行内。但是,当我尝试访问Range中的特定元素时,会引发异常。我已经尝试了一切,有没有人知道我在这里做错了什么?异常Message:Testmethodxxx.MockUtilsTest.MockRowsTestthrewexception:Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:Cannotapplyindexingwith[]toanexpressionoftype'Castle.Proxies.RangeProxy'测试[TestMethod]p

c# - 单元测试内存泄漏

我有一个存在大量内存泄漏的应用程序。例如,如果打开一个View并将其关闭10次,我的内存消耗会增加,因为View没有完全清理。这些是我的内存泄漏。从测试驱动的角度来看,我想编写一个测试来证明我的泄漏,并且(在我修复泄漏之后)断言我修复了它。这样我的代码以后就不会被破坏。简而言之:有没有办法断言我的代码没有从单元测试中泄漏内存?例如我可以做这样的事情吗:objectsThatShouldNotBeThereCount=MemAssertion.GetObjects().Count;Assert.AreEqual(0,objectsThatShouldNotBeThereCount);我对