草庐IT

static-assert

全部标签

c# - 使用 Assert.AreEqual() 比较两个对象

我第一次在VisualStudioC#中编写测试用例,我有一个返回对象列表的方法,我想使用Assert.AreEqual()方法。我尝试这样做,但即使两个对象相同,断言也会失败。我想知道这个方法,两个参数是比较引用还是比较对象的内容,我是否必须重载==运算符才能使其正常工作? 最佳答案 这些答案对于这个问题来说太复杂了。比较两个列表不需要覆盖,也不需要分解多个断言。Microsoft使用以下类CollectionAssert。CollectionAssert.AreEqual(expectedList,actualList)这适用于

c# - Assert.That 与 Assert.True

喜欢什么:Assert.That(obj.Foo,Is.EqualTo(true))或Assert.True(obj.Foo)对我来说,这两个断言是等价的,那么应该首选哪个? 最佳答案 在这种特殊情况下,没有区别:您将看到大致相同详细程度的输出(即它告诉您预期评估为true的内容已评估为假)。同样适用于Assert.IsTrue(obj.Foo);和Assert.That(obj.Foo,Is.True);您的团队应该选择一种断言风格,并在所有测试中坚持使用它。如果您的团队更喜欢Assert.That风格,那么您应该使用Assert

c# - 推荐哪个: "static public" or "public static"

如果您有一个static和public的类成员。你会写staticpublic还是publicstatic?我知道他们是一样的。但是是否有一些关于编写此内容的建议/最佳实践? 最佳答案 “publicstatic”更为常见,因此您可能希望使用它只是为了提高从未偶然发现“staticpublic”的程序员的可读性。 关于c#-推荐哪个:"staticpublic"or"publicstatic",我们在StackOverflow上找到一个类似的问题: https

c# - Debug.Assert 与代码契约(Contract)用法

我应该在什么时候对代码契约进行调试断言,反之亦然?我想检查一种方法的先决条件,但我很困惑要选择一个而不是另一个。我有单元测试,我想在其中测试失败场景并期望出现异常。在同一个方法上使用Debug.Assert和Code契约是一种好的做法吗?如果是这样,代码的编写顺序应该是怎样的?Debug.Assert(parameter!=null);Contract.Requires(parameter!=null,"parameter");或Contract.Requires(parameter!=null,"parameter");Debug.Assert(parameter!=null);背后

C# 错误 : "An object reference is required for the non-static field, method, or property"

我有两个类,一个用于定义算法参数,另一个用于实现算法:1类(算法参数):usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceVM_Placement{publicstaticclassAlgorithmParameters{publicstaticintpop_size=100;publicstaticdoublecrossover_rate=0.7;publicstaticdoublemutation_rate=0.001;publicstaticintchrom

c# - 如何使用 Fluent Assertions 来测试不等式测试中的异常?

我正在尝试使用C#中的FluentAssertions为大于覆盖的运算符编写单元测试。如果任一对象为空,则此类中的大于运算符应该抛出异常。通常在使用FluentAssertions时,我会使用lambda表达式将方法放入操作中。然后我会运行操作并使用action.ShouldThrow.但是,我不知道如何将运算符放入lambda表达式中。我不想使用NUnit的Assert.Throws(),Throws约束,或[ExpectedException]属性的一致性。 最佳答案 你可以试试这个方法。[Test]publicvoidGrea

c# - 什么是 "static"类?

在C#中有什么区别:publicstaticclassClassName{}和:publicclassClassName{} 最佳答案 首先,对一个回答的评论询问“静态”是什么意思。在C#术语中,“静态”意味着“与类型本身相关,而不是类型的实例”。您使用类型名称而不是引用或值访问静态成员(来自另一个类型)。例如://Staticmethod,socalledusingtypenameGuidsomeGuid=Guid.NewGuid();//Instancemethod,calledonavaluestringasString=so

时间:: console application - static methods

为什么在C#中,控制台应用程序,在默认的“程序”类中,所有方法都必须是静态的staticvoidMain(string[]args) 最佳答案 成员函数不必是静态的;但如果它们不是静态的,则需要您实例化一个Program对象才能调用成员方法。使用静态方法:publicclassProgram{publicstaticvoidMain(){System.Console.WriteLine(Program.Foo());}publicstaticstringFoo(){return"Foo";}}没有静态方法(换句话说,要求您实例化Pr

c# - 为什么 Assert.IsInstanceOfType(0.GetType(), typeof(int)) 会失败?

我是单元测试的新手,使用Microsoft.VisualStudio.TestTools.UnitTesting;0.GetType()其实就是System.RuntimeType,那么我需要写什么样的测试才能通过Assert.IsInstanceOfType(0.GetType(),typeof(int))?---跟进,这是我自己的用户错误...Assert.IsInstanceOfType(0,typeof(int)) 最佳答案 将调用更改为以下内容Assert.IsInstanceOfType(0,typeof(int));第

c# - C# 控制台应用程序中的 public static void Main() 和 private static void Main() 有什么区别?

有什么区别publicstaticvoidMain()和privatestaticvoidMain()在C#控制台应用程序中?特别是因为它与Main()方法有关(我了解public和private之间的区别)。 最佳答案 要作为应用程序的起点,Main方法不需要是public。如果您确实决定将其设为public,则它可能会被其他类或程序集调用。通常您不需要这样做,因此您可以将其设为private。将其设为public的一个可能用例是允许自动化测试调用它。 关于c#-C#控制台应用程序中的