我这里有这个程序:namespaceTodoPlus{usingSystem.Diagnostics;publicclassLameProg{publicLameProg(){}publicstaticvoidMain(string[]args){inta=2;intb=3;Debug.Assert(a==b,"Bleh");System.Console.WriteLine("Haha,itdidn'twork");}}}不知何故,Debug.Assert不工作。我正在使用Mono2.10.5,这是我用来编译和执行的:dmcsLameProg.csmono./LameProg.exe我
我有一个类MyCustomClass:publicMyCustomClass{publicMyCustomClass(){MyObject=newList();}publicListMyObject{get;set;}}在测试中:Listaux=newList();MyCustomClassoClass=newMyCustomClass();Assert.AreEqual(aux,oClass.MyObject)测试失败,为什么?每个属性、静态成员等都是相同的。 最佳答案 在这种情况下,Assert.AreEqual将检查两个对象是
我正在使用Moq来测试一些void方法的行为。使用MockBehaviour.Strict必须在Arrange步骤期间指定对模拟的每次调用。这导致许多测试没有任何Assert(或Verify)步骤。通过条件只是测试运行没有抛出异常。我错过了什么吗?Arrange,Act,Assert模式在使用严格模拟时是否不合适?是否有更语义化的方式来安排这些测试?一个简单的虚构例子......[TestClass]publicvoidDeleteUser_ShouldCallDeleteOnRepository(){//ArrangevaruserRepository=newMock(MockBeh
我有一个类库,它包含以下模型和方法型号:publicclassEmployee{publicintEmpId{get;set;}publicstringName{get;set;}}方法:publicclassEmployeeService{publicListGetEmployee(){returnnewList(){newEmployee(){EmpId=1,Name="John"},newEmployee(){EmpId=2,Name="AlbertJohn"},newEmployee(){EmpId=3,Name="Emma"},}.Where(m=>m.Name.Contai
我正在编写一些单元测试,但以下断言失败了:Assert.AreEqual(expected.Episode,actual.Episode);如果我改为调用它,它会成功:Assert.IsTrue(expected.Episode.Equals(actual.Episode));我曾假设Assert.AreEqual()最终会针对给定的类型调用Equals()方法,在本例中为Episode.Equals()。但是,在Microsoft.VisualStudio.TestTools.UnitTesting.Assert的幕后,我发现了以下代码(由ReSharper反编译):publicst
使用流畅的断言,我想断言给定的字符串包含两个字符串之一:actual.Should().Contain("oneWay").Or().Should().Contain("anotherWay");//eitervalueshouldpasstheassertion.//forexample:"youmaydoitoneWay."shouldpass,but//"youmaydoitthisWay."shouldnotpass只有当两个值都不包含时,断言才会失败。这不起作用(甚至无法编译),因为没有Or()运算符。我现在是这样做的:boolisVariant1=actual.Contai
我是单元测试的新手,尤其是NUit。我只是从书中输入一些涉及Java和JUnit的示例。但我改用C#。问题是:我有一个带有重写方法的类,例如Equals()和GetHashCode(),但是当我尝试比较的两个对象时这个类Assert.AreEqual()我的代码没有被调用,所以我得到一个异常。Assert.True(MyClass.Equals(MyClass2))运行良好。但我不想使用此构造代替Assert.AreEqual()。问题出在哪里?这是类:publicclassMoney{publicintamount;protectedstringcurrency;publicMone
测试返回类型为bool的方法时。你应该:expected=true;Assert.AreEqual(expected,actual);或Assert.IsTrue(actual);我知道它们都产生相同的结果,但哪种做法更好?编辑:例如,如果我执行AreEqual,它与在返回字符串ala的方法上执行IsTrue本质上不一样吗:stringexpected=“true”;stringactual=test.testMethod(data)booltest;ifexpected.equals(actual)test=true;elsetest=false;Assert.IsTrue(test
当Debug.Assert的参数计算为false时,是否有任何方法可以导致VisualStudio2010在调试时中断?示例:在我的代码中有这样的行:Debug.Assert(!double.IsInfinity(x));如果我没有调试,断言失败时会弹出一个窗口。但是当我调试时,断言被记录到“输出”Pane中,这很容易被遗漏;没有弹出窗口,调试器不会停止。因此:当Debug.Assert失败时,是否有任何方法可以强制VisualStudio调试器中断?(顺便说一句:我正在开发基于WPF的桌面应用程序。在Windows窗体应用程序中,行为似乎有所不同:此处,调试器在Debug.Asser
我发现按照AAA模式中的建议对单元测试语句进行分区的概念很有用。我倾向于添加标题注释,以便测试看起来像这样://Arrangeinta=1;intb=2;//Actintc=a+b;//AssertAssert.AreEqual(3,c);但我很好奇,总是包含这些标题注释是否正常?...或者这是我应该避免的事情?inta=1;intb=2;intc=a+b;Assert.AreEqual(3,c); 最佳答案 一旦理解了基本前提,这似乎并没有增加太多值(value)。既然你提到了C#,我建议看看TheArtofUnitTesting