Tag: nunit

C#:如何测试基本的线程工作者类

我正在考虑如何测试multithreading的东西,但不太确定如何开始。 我相信如果我能把事情搞定,我会更容易找到更多的东西,所以我想知道是否有人可以帮助我为这个简单的类编写一个NUnit测试用例: class Worker { public event EventHandler Done = (s, e) => { }; public void StartWork() { var thread = new Thread(Work) { Name = “Worker Thread” }; thread.Start(); } private void Work() { // Do some heavy lifting Thread.Sleep(500); Done(this, EventArgs.Empty); } } 我想测试的是: Done事件在Done时是否会被提升。 如果它是同步的话我会没有问题,但是当它不是时,我也不确定从哪里开始。 一个简单的测试,如果它不是multithreading的(并且Work方法不是私有的)可能是: [TestFixture] class WorkerTests { [Test] […]

任何具有良好unit testing的ASP.NET(WebForm)应用程序(CodePlex或任何地方)?

我正在寻找任何ASP.NET(WebForms&C#)应用程序,它在其解决方案中有一些很好的unit testing。 良好的意义测试不同类型的边缘情况,并做了良好的代码覆盖。 CodePlex,GitHub或任何地方的任何应用程序都可以。 这是出于教育目的,所以我更喜欢较小的应用程序而不是大型的 有什么建议? 澄清: 虽然应用程序是WebForms,但我感兴趣的unit testing更多的是业务逻辑,而不是UI。 是的,任何.NET应用程序都可以做,但如果它是带有一些UI测试的WebForms,那就更好了。

今天,Visual Studio 2010中的unit testing有哪些首选选项?

我是TDD的新手,正在研究我的Visual Studio 2010解决方案的unit testing选项。 这个解决方案是一个MVC3 Web应用程序,我正在尝试将DDD与IoC,存储库和工作单元格一起使用。 它还使用EF4和EF4 POCO模板。 (我试图从微软N层应用程序中模拟大部分内容,同时借用其他几个博客的设计模式)。 我一直在搜索和阅读这个问题几个小时,而且我发现在任何地方我都发现了相互矛盾的信息。 其中很大一部分原因是由于旧的结果出现以及Visual Studio 2010的不断发展的选项。 我知道有几种选择,但同样,我很难从较新的选项中辨别出过时的选项,并且人们使用的引用中存在一些含糊之处。 即使是这里的热门讨论也有一些陈旧/含糊/冲突的信息。 例如: MSTest , Visual Studiounit testing框架和Microsoft.VisualStudio.TestTools.UnitTesting之间有区别吗? 如果是这样,什么? 看来这些是不同的,但在我看过的一些讨论中却被错误地引用了。 由于NUnit的作者也创作了xUnit,这是否意味着xUnit取代了NUnit,因此不推荐使用NUnit? 似乎有些人,甚至今天,更喜欢NUnit。 但是如果NUnit被弃用了,为什么今天会开始使用NUnit而不是xUnit呢? 如果不推荐使用NUnit,这是否意味着xUnit没有像最初的那样起飞? 为什么作者会继续支持两个看似冗余的工具? 哪些这些集成到VS2010中而不必单独执行命令行来测试,或者必须购买TestDriven.Net等工具? (但我确实有ReSharper,如果这支持其中任何一个。) 最近是否有任何显着的变化会使这些无效的旧讨论变得无效? 除了我上面提到的那些之外,还有其他我应该考虑的问题吗? 我不一定要寻找深入的比较(尽管如果您愿意,我们非常欢迎您提供一个),但更多的是当前正在使用的当前工具的最新共识新的VS2010开发。 从表面上看,“Visual Studiounit testing框架”似乎很好地集成到VS2010(Pro)开箱即用,并且似乎很容易快速启动和运行,而不是其他一些,即使它是有点臃肿。 但是因为我是新人,所以我不想在未来3个月内进入它,然后意识到我已经把自己画成一个角落,因为它似乎更容易接受。 我也知道这个问题可能被某些人认为是一个“坏”的问题,因为它具有开放和广泛的性质,但虽然这些是不同的问题,但我觉得它们都是相关的,而且都源于我对模糊的一般混淆我在VS2010中发现了unit testing的相互矛盾。 提前致谢。 编辑:这是对我上面提到的近三年流行讨论的更新讨论。 这个讨论有一些好处,但很多事情(可能)在三年内发生了变化,我更喜欢这个主题的更新评价。

如何在Nunit中调用WPF Dispatcher?

我想测试一个呈现具有数据字段值的文本块的应用程序。 渲染完成后,我想得到实际宽度和实际高度。 一切正常。 当我尝试测试应用程序时,首先出现问题。 我无法从测试项目中调用调度程序。 以下是代码。 this.Loaded += (s, e) => { TextBlock textBlock1 = new TextBlock(); //// Text block value is assigned from data base field. textBlock1.Text = strValueFromDataBaseField; //// Setting the wrap behavior. textBlock1.TextWrapping = TextWrapping.WrapWithOverflow; //// Adding the text block to the layout canvas. this.layoutCanvas.Children.Add(textBlock1); this.Dispatcher.BeginInvoke(DispatcherPriority.Background, (Action)(() => { //// After rendering […]

使用nUnit测试死锁

我是unit testing和nUnit(2.48)的新手。 我想写一个测试方法,其中失败的情况是它死锁。 这可能吗? 显然,nUnit默认不知道该方法应该执行多长时间,因此我必须编写代码来在单独的线程上完成工作然后中止它并抛出exception(如果花费的时间超过我定义的时间)? 有一个更好的方法吗? 谢谢

在Visual Studio C#Express 2010中调试Nunit测试

我已经按照这个建议来调试NUnit测试。 http://www.blackwasp.co.uk/NUnitCSharpExpress.aspx 但是,我有几个测试做Assert.Throws ,这导致调试器在我正在测试的exception发生时中断,当我真的希望它在这些调用之外发生exception时中断。 如何让调试器忽略这些方法中引起的exception? 编辑:我的事件尝试了下面,这是行不通的! [Test] public void InstanciatingWithNullParameterThrowsException() { try { Assert.Throws(() => new CachedStreamingEnumerable(null)); // This still throws and stops be being able to debug tests called after this one } catch { } }

如何对需要特定文件的类进行unit testing

我目前正在努力学习正确的unit testing。 所以现在我正在尝试为一个类编写unit testing,该类应该将XML-File中的数据映射到正确的对象。 当然,该类的所有function都取决于相应XML文件的存在。 XML文件加载在类的构造函数中。 我正在使用C#和NUnit。 到目前为止,我有两个测试: [Test] public void ShouldAllowInstanceToBeCreatedWhenXMLFileIsPresent() { if (File.Exists(SettingsReader.XML_SETTINGS_PATH)) { SettingsReader settingsReader = new SettingsReader(); Assert.AreNotEqual(null, settingsReader); } } [Test] [ExpectedException(“Telekanzlei.Clientmanager.XMLDataLayer.XMLFileNotFoundException”)] public void ShouldThrowExceptionWhenXMLFileIsNotPresent() { if (!File.Exists(SettingsReader.XML_SETTINGS_PATH)) { SettingsReader settingsReader = new SettingsReader(); } else throw new XMLFileNotFoundException(); } 我不确定在测试中检查文件是否存在是正确的方法,所以对这些测试的任何建议也是受欢迎的。 但我的问题是,如何进行以下测试。 如果XML文件不存在,显然所有后续测试都将失败。 那么我是否认为XML文件存在,同时请记住,失败的测试可能只是意味着它不是? 这对我来说似乎不对。 是否有一般模式来处理这样的问题? 感谢任何帮助 编辑:重写第二个测试,因为如果文件实际存在则失败… edit2:可能有助于告诉你,SettingsReader实际上做了什么。 到目前为止它看起来像这样: […]

具有参数的Nunit测试设置方法

我们可以使用参数设置测试方法吗? 我需要为灯具中的每个测试设置不同的设置。 我们是否有假设的想法(或类似方式): [SetUp] [Argument(“value-1”)] [Argument(“value-2”)] [Argument(“value-3”)] public void InitializeTest(string value) { //set env var with value }

延迟NUnit断言消息评估

我的测试代码中有这个断言 Assert.That(() => eventData.Count == 0, Is.True.After(notificationPollingDelay), “Received unexpected event with last event data” + eventData.Last().Description()); 在一段时间后断言某些条件并在失败时产生一条消息。 它无法运行,因为消息字符串是在断言开始时构造的,而不是在断言结束时构造的。 因此, eventData集合仍然是空的(最初是这样),并且尝试获取集合中最后一项的Description失败。 在NUnit是否有解决方法或替代方案,或者我必须在我的测试中恢复使用Thread.Sleep ? PS:我正在使用NUnit 2.5.10。

Assert.That vs Assert.True

更喜欢什么: Assert.That(obj.Foo, Is.EqualTo(true)) 要么 Assert.True(obj.Foo) 对我来说,两个断言都是等价的,那么哪一个应该是首选的?