jjzjj

c# - 忽略 xUnit.net 中的异常

在某些情况下,我不关心抛出什么异常(只要抛出一些异常即可)。不幸的是,Assert.Throws(someDelegate);除非恰好抛出Exception的实例(因此不是派生类的实例),否则不会通过。我知道我可以获得我想要的行为Exceptionexception=Record.Exception(someDelegate);Assert.NotNull(exception);但它读起来不对。我是否在xUnit中遗漏了一些具有我想要的行为的东西?这里有两个测试表明我的意思:[Fact]publicvoidThrows_exception_and_passes(){Exceptione

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

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

c# - 如何使用 NUnit 中的指定容差比较 double ?

我目前正在为属于我的产品的DLL开发一个C#P/invoke包装器。我没有使用C#的经验,这是我完成的第一个重要的C#编码。我敏锐地意识到,我对这门语言的要点和习语缺乏很多了解。我的问题涉及我正在使用NUnit编写的单元测试。我需要比较double[]变量的值。如果我使用Assert.AreEqual(...)来执行此操作,则会比较这些值是否完全相等。但是,我想比较一个公差。有AreEqual()重载标量实数值,允许delta参数。但是,我一直无法找到数组的等效项。我错过了一些明显的东西吗?目前我已经用下面的代码解决了这个问题:classAssert:NUnit.Framework.A

c# - 如何使用 xUnit、SubSpec 和 FakeItEasy 测试抛出的异常

我正在使用xUnit、SubSpec和FakeItEasy进行单元测试。到目前为止,我已经创建了一些积极的单元测试,如下所示:"GivenaOptionspresenter".Context(()=>presenter=newOptionsPresenter(view,A.Ignored,service));"withtheInitializemethodcalledtoretrievetheoptionvalues".Do(()=>presenter.Initialize());"expecttheviewnottobenull".Observation(()=>Assert.Not

c# - NUnit:为什么 Assert.Throws<T> 没有捕获我的 ArgumentNullException?

我应尊敬的JohnSkeet先生的要求重新发布这个问题,他建议我设计一个简单的测试程序来隔离和演示我遇到的问题并重新发布这个问题。这个问题源于thisone,所以如果这一切听起来很熟悉,请原谅我。您可能会从那个问题中收集到关于这个问题的额外详细信息。我遇到的问题是Assert.Throws来自NUnit2.5.9。有时,它无法捕获在TestDelegate调用的方法中抛出的任何异常。我在下面的代码中以可重现的方式确定了这种行为。(尽管这可能是FailsOnMyMachine™的一个例子。为了重现错误,我创建了一个包含两个C#DLL项目的解决方案:第一个包含一个类,具有一个公共(publ

c# - 无法在 Visual Studio 2012 中调试单元测试项目

我找不到与此类似的帖子,所以我希望这不是重复的。我有一个c#类库,我正尝试在VisualStudio2012中对其运行单元测试。我已将新的单元测试项目添加到我的解决方案中,并将我的主项目添加为那里的引用。我已将我的单元测试项目设置为启动项目。当我尝试调试时,我收到一条错误消息AprojectwithanOutputTypeofClassLibrarycannotbestarteddirectly.Inordertodebugthisproject,addanexecutableprojecttothissolutionwhichreferencesthelibraryproject.S

ShouldBeEquivalentTo 的 C# Fluent Assertions 全局选项

在FluentAssertions中比较具有DateTime属性的对象时,有时会出现毫秒的轻微不匹配,从而导致比较失败。我们绕过它的方法是像这样设置比较选项:actual.ShouldBeEquivalentTo(expected,options=>options.Using(ctx=>ctx.Subject.Should().BeCloseTo(ctx.Expectation)).WhenTypeIs());有没有办法设置一次并始终应用它,而不是每次我们调用ShouldBeEquivalentTo时都必须指定它?更新一:尝试了以下方法,但它似乎不起作用,测试在1毫秒差异时失败。新的默

c# - xunit.net 中是否有一种简单的方法可以在不考虑项目顺序的情况下比较两个集合?

在我的一个测试中,我想确保一个集合有特定的项目。因此,我想将此集合与预期集合的项目进行比较,不考虑项目的顺序。目前,我的测试代码看起来有点像这样:[Fact]publicvoidSomeTest(){//DosomethinginArrangeandActphasetoobtainacollectionListactual=...//NowtheimportantstuffintheAssertphasevarexpected=newList{42,87,30};Assert.Equal(expected.Count,actual.Count);foreach(variteminact

c# - 测试先决条件的不同方法的优缺点?

在我的脑海中,我可以想到4种检查空参数的方法:Debug.Assert(context!=null);Contract.Assert(context!=null);Contract.Requires(context!=null);if(context==null)thrownewArgumentNullException("context");我一直使用最后一种方法,但我只是看到一段使用Contract.Requires的代码片段,我对此并不熟悉。每种方法的优点/缺点是什么?还有其他方法吗?在带有Resharper的VS2010中,Contract.Assert警告我表达式始终为真(它

用于指示失败的 JavaScript 反静默技术

当确实发生错误并且函数无法继续执行时,在JavaScript中报告错误而不是依赖null和undefined的好方法是什么?我可以想到三种方法:什么都不做抛出异常断言这是一个简单的示例场景-一个将传入的金额存入用户帐户的函数。credit函数是Account对象的一部分。这是天真的解决方案。functioncredit(amount){this.balance+=amount;}这种方法的一个主要问题是无效数据。让我们修复它,并使用返回值来指示操作失败。functioncredit(amount){if(!isInt(amount)){returnfalse;}this.balance