jjzjj

assert_equal

全部标签

c# - 单元测试是否使 Debug.Assert() 变得不必要?

我准备好麦康奈尔的“CodeComplete”已经有一段时间了。现在我在Hunt&Thomas的“ThePragmaticProgrammer”中再次阅读它:使用断言!注意:不是单元测试断言,我的意思是Debug.Assert()。遵循SO问题WhenshouldIuseDebug.Assert()?和Whentouseassertionoverexceptionsindomainclasses断言对开发很有用,因为可以很快找到“不可能”的情况。而且它们似乎很常用。据我了解,断言在C#中通常用于检查输入变量的“不可能”值。为了使单元测试尽可能简洁和独立,我使用null和“不可能的”虚拟

c# - C# 可以提供 static_assert 吗?

我正在寻找一种在C#编程语言中进行编译时断言的方法,例如C++的BOOST库或新的C++0x标准提供的断言。我的问题是双重的;这可以在标准的、可移植的C#中实现吗?或者,是否可以通过对给定C#编译器的怪癖进行不可移植的假设来实现该行为?在谷歌上快速搜索发现以下链接指向一个technique,我不确定其标准合规性和兼容性。 最佳答案 该方法与其他没有内置静态断言的语言(Delphi、较旧的C++等)相同:找到一种机制将要断言的条件转换为编译器不满意的条件,如果条件是假的。对于C#,最容易利用的机制之一是关于将负文字/常量分配给无符号类

c# - 通用约束 : Can I test Equality of generic that can be a reference or value type?

我想要一个通用类,它可以接受引用类型或值类型,并且只执行基于相等性测试的操作。考虑以下几点:publicclassPropertywhereTProp:struct,IEquatable{publicTPropValue;publicvoidSetValue(ObservableObjectowner,TPropvalue){if(!Value.Equals(value))//cannotuse!=onstructconstrainedTProp{//...settheproperty}}}publicclassByRefPropertywhereTProp:class//Dontwa

c# - 'Debug.Assert' 语句在 Mono 中不起作用

我这里有这个程序: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我

c# - 为什么 Object.Equals() 在从不同的程序集实例化时对相同的匿名类型返回 false?

我有一些代码可以将强类型业务对象映射到匿名类型,然后将其序列化为JSON并通过API公开。将我的解决方案重组为单独的项目后,我的一些测试开始失败。我做了一些挖掘,结果是Object.Equals对来自不同程序集的代码返回的匿名类型的行为不同-我不确定为什么,或者我可以做些什么来解决它。在https://github.com/dylanbeattie/AnonymousTypeEquality有完整的重现代码但实际上破坏的部分在下面。此代码在测试项目中:[TestFixture]publicclassTests{[Test]publicvoidBothInline(){vara=new{

c# - Moq.Mock.Verify() 是否使用身份或.Equals() 比较参数?

像这样的命令varmockObj=newMock()varanotherObj=Utilities.DoStuff();//sometests...mockObj.Verify(foo=>foo.someMethod(anotherObj));Moq是使用身份比较还是使用.Equals()来确定someMethod()是否曾被anotherObj调用为范围?换句话说,我指示为foo.someMethod()的参数的对象是否必须与之前为验证调用的someMethod()完全相同的对象传递,还是只需要等于anotherObj? 最佳答案

c# - .NET 的 Equals 方法的真正含义是什么?

我们知道所有类型都从它们的基类Object继承Equals。根据微软文档:Equalsreturnstrueonlyiftheitemsbeingcomparedrefertothesameiteminmemory.所以我们使用Equals()来比较对象引用,而不是对象的状态。Typically,thismethodisoverriddentoreturntrueonlyiftheobjectsbeingcomparedhavethesameinternalstatevalues.我的问题:两个对象是否可以指向内存中的同一项但具有不同的状态?如果不是,为什么要覆盖Equals?感谢您提

c# - 如何在不破坏现有 Object.Equals() 的情况下仅检查两个对象的属性是否相等?

基本上,GethashCode是不同的,即使它们包含相同的属性值...那么为什么默认返回差异哈希码?publicclassUser{publicInt32Id{get;set;}publicStringUsername{get;set;}}Usera=newUser();a.Id=1;a.Username="Hello";Userb=newUser();b.Id=1;b.Username="Hello";Console.WriteLine("HashA:{0}|HashB:{1}",a.GetHashCode(),b.GetHashCode());//HashA:37121646|Ha

c# - 为什么当我比较两个空列表时测试 'Assert.AreEqual' 失败了?

我有一个类MyCustomClass:publicMyCustomClass{publicMyCustomClass(){MyObject=newList();}publicListMyObject{get;set;}}在测试中:Listaux=newList();MyCustomClassoClass=newMyCustomClass();Assert.AreEqual(aux,oClass.MyObject)测试失败,为什么?每个属性、静态成员等都是相同的。 最佳答案 在这种情况下,Assert.AreEqual将检查两个对象是

c# - 使用 Mocks 验证依赖调用时的 TDD Arrange Act Assert 模式

我正在使用Moq来测试一些void方法的行为。使用MockBehaviour.Strict必须在Arrange步骤期间指定对模拟的每次调用。这导致许多测试没有任何Assert(或Verify)步骤。通过条件只是测试运行没有抛出异常。我错过了什么吗?Arrange,Act,Assert模式在使用严格模拟时是否不合适?是否有更语义化的方式来安排这些测试?一个简单的虚构例子......[TestClass]publicvoidDeleteUser_ShouldCallDeleteOnRepository(){//ArrangevaruserRepository=newMock(MockBeh