在我的Nunit测试程序中,我想通过验证消息来验证它是否正在获取写入参数异常。[Test]publicvoidArgumentsWorkbookNameException(){conststringworkbookName="Tester.xls";varargs=new[]{workbookName,"Sheet1","Source3.csv","Sheet2","Source4.csv"};Assert.Throws(typeof(ArgumentException),delegate{varappargs=newApplicationArguments(args);},"Inva
如果我有接口(interface)IFoo,并且有几个实现它的类,那么根据接口(interface)测试所有这些类的最佳/最优雅/最聪明的方法是什么?我想减少测试代码重复,但仍然“忠于”单元测试的原则。您认为最佳做法是什么?我正在使用NUnit,但我想来自任何单元测试框架的示例都是有效的 最佳答案 如果您有类实现任何一个接口(interface),那么它们都需要实现该接口(interface)中的方法。为了测试这些类,您需要为每个类创建一个单元测试类。让我们走一条更聪明的路线吧;如果您的目标是避免代码和测试代码重复,您可能希望创建一
我想编写一个接受两个对象的可调用函数,并将这些对象的30多个属性与断言进行比较。问题是这需要为大约20个现有单元测试和大多数future测试完成,并且每次写出30多个断言既费时又费空间。我目前有一个非单元测试函数,它比较对象,并返回带有“通过”或失败消息的字符串,并使用断言在每个单元测试中验证它。然而,它非常困惑,我觉得我违背了正确的单元测试方法。有没有办法制作一个可从使用断言检查条件的单元测试内部调用的函数? 最佳答案 如果您使用的是NUnit2.5.5或更高版本,则可以使用TestCase属性。普通的单元测试会用[Test]装饰
我必须在我的代码中多次键入Console.WriteLine()。是否可以为Console.WriteLine创建快捷方式,以便我可以像...一样使用它CW=Console.WriteLine();//Afterthat,IcanusethisCWformyConsole.WriteLine()likeCW("PrintSomething"); 最佳答案 VisualStudio已经为此提供了一个默认代码片段。只需键入cw并按tab。请注意,如果您正在考虑使用一种方法,它可能缺少一些功能,例如自动string.Format和其他重载
当运行一小段C#代码时,当我尝试将一个长字符串输入Console.ReadLine()时,它似乎在几行之后就被切断了。Console.Readline()是否有最大长度,如果有,有没有办法增加它? 最佳答案 stack72的答案的一个问题是,如果代码在批处理脚本中使用,则输入不再是行缓冲的。我在averagecoder.net找到了一个替代版本保持ReadLine调用。请注意,StreamReader还必须有一个长度参数,因为它也有一个固定的缓冲区。byte[]inputBuffer=newbyte[1024];Streaminpu
我正在查看一些使用NUnit的测试代码,它继承自包含[SetUp]属性的基类:publicclassBaseClass{[SetUp]publicvoidSetUp(){//dosomething}}[TestFixture]publicclassDerivedClass:BaseClass{[SetUp]publicvoidSetUp(){//dosomethingelse,withnocalltobase.SetUp()}//testsrundownhere.//[Test]//[Test]//etc}派生类当然需要在基类的SetUp()方法中完成的工作。我是不是遗漏了什么,或者当
[编辑(2020年5月)]-据报道,此问题已在较新版本的NUnit中得到解决。请看Nunit.ThrowsAsync.(引用thisanswer,感谢@James-Ross)我有一个ControllerUserController可以执行此操作//GET/blahpublicTaskGet(stringdomainUserName){if(string.IsNullOrEmpty(domainUserName)){thrownewArgumentException("Nousernamespecified.");}returnTask.Factory.StartNew(()=>{var
我想提出一个问题,例如:Whatisyourname?Joe我如何使用Console.WriteLine来完成此操作,同时等待同一行上的响应而不是将其分解为:Whatisyourname?Joe 最佳答案 使用Console.Write相反,所以没有写换行符:Console.Write("Whatisyourname?");varname=Console.ReadLine(); 关于c#-您如何在同一Console.WriteLine()行上等待输入?,我们在StackOverflow上
我需要在NUnit单元测试中使用一些WPF组件。我通过ReSharper运行测试,但在使用WPF对象时失败并出现以下错误:System.InvalidOperationException:ThecallingthreadmustbeSTA,becausemanyUIcomponentsrequirethis.我读过这个问题,听起来线程需要是STA,但我还没有想出如何做到这一点。触发问题的是以下代码:[Test]publicvoidMyTest(){vartextBox=newTextBox();textBox.Text="Sometext";// 最佳答案
有没有办法从控制台中删除最后一个字符,即Console.WriteLine("List:apple,pear,");//Somehowdeletethelast','characterfromtheconsole.Console.WriteLine(".");//Nowtheconsolecontains"List:apple,pear."当然,我可以先创建一个字符串,然后将其打印到控制台,但我只是想看看是否可以直接从控制台删除字符。 最佳答案 "\b"是ASCII退格键。打印它以备份一个字符。Console.Write("Abc"