Tag: unit testing

当所需代码几乎没有逻辑时,是否仍然使用TDD编写测试? 为什么?

TDD应该具有100%的代码覆盖率。 这是否意味着应该为属性getter和setter编写测试,以及其他不包含实际逻辑的方法,例如处理外部APIfunction? 例1: 下面是一个示例方法(这也恰好是另一个SO问题的例子,它解决了如何最好地测试它,如果我们要测试它)。 这种方法做得不多。 它是停止服务的System.ServiceProcess.ServiceControllerfunction的外观。 目前这个代码不是使用TDD编写的,但如果是,那么它应该是一个应该测试的东西吗? 这里的逻辑非常少。 测试本身并没有那么有用。 仅供参考:如果您想回答如何最好地测试它(IoC&Adapter Pattern vs. Detouring),请参阅其他问题 。 Public Function StopService(ByVal serviceName As String, ByVal timeoutMilliseconds As Double) As Boolean Implements IWindowsServicesService.StopService Try Dim service As New ServiceController(serviceName) Dim timeout As TimeSpan = TimeSpan.FromMilliseconds(timeoutMilliseconds) service.[Stop]() If timeoutMilliseconds <= 0 Then service.WaitForStatus(ServiceControllerStatus.Stopped) Else service.WaitForStatus(ServiceControllerStatus.Stopped, timeout) End If Return service.Status = […]

C#.NET 4.0测试框架?

如果我没有弄错的话,NUnit是unit testing的事实上的标准,但是我刚下载它,写了一个简单的测试,然后显然我必须启动GUI并加载我的.exe程序集,这只是失败。 我试过编辑 C:\Program Files (x86)\NUnit 2.5.7\bin\net-2.0\nunit.exe.config 正如在这个问题中所建议的,但这也没有用,所以我尝试下载nunit源代码并在vs2010中编译它,但它甚至都没有编译。 说无法找到punit.framework.dll 。 该解决方案说“不包含AllTestsExecuted的定义”,所以我在这里有点沮丧。 您认为.net 4会有一个易于使用且运行良好的框架,不是吗? 所以我的问题是,我如何让NUnit工作,或者是否有另一个框架可以减少我的痛苦?

unit testing异步事件处理程序

[TestInitialize] public void Initialize() { //DO Something async_eventhandler += the_eventhandler(async_eventhandler); } private void async_eventhandler { test = test2 // test2 comes from client, after here TestMethod have to start } [TestMethod] public void TestMethod1() { Assert.AreEqual(“test_test”, test); } unit testing失败,因为方法是异步的。 字符串test为“NULL”,因为值test2稍后出现。 我该如何解决这个问题?

Mock上的设置未返回预期值

这是我遇到的问题的简化版本: public interface IService { IProvider Provider { get; } } public interface IProvider { List Numbers{ get; } string Text { get; } } [TestMethod] public void ServiceTest() { var service = new Mock(); var provider = new Mock(); service.Setup(s => s.Provider).Returns(provider.Object); // A service.Setup(s => s.Provider.Text).Returns(“some text”); // B – incorrect // they […]

更改NUnit测试的名称

我希望我的基于NUnit框架的unit testing在Visual Studio测试资源管理器中更具人性化。 例如,我最好不要使用Test_Case_1或TestCase1而是选择Test Case #1, Category: First, Category: Second (通过分配[Category]属性中的值),方法名称中不允许使用空格和字符。 我知道它在xUnit中是开箱即用的,但我不能参与其中,因为我使用的是我无法使用xUnit框架实现的自定义。 是否可以使用NUnit重写unit testing显示名称? 到目前为止,我可以看到, TestDetail FullName字段有私有的setter。 是否有其他方法或方法更改NUnit测试的显示名称?

在完整的.NET框架上测试Asp.Net Core

我想对一个针对完整的.net框架的asp.net核心项目进行unit testing。 我尝试使用本博文中概述的“普通”unit testing项目模板和.net核心项目,但两次尝试均失败,因为我的Web项目的程序集无法在任何一个测试项目中引用。 有没有办法在完整框架上unit testingasp.net核心应用程序?

ReSharper 10测试运行器未能找到从外部文件引用的AppSettings

我最近升级到ReSharper 10.0.1 for Visual Studio 2013.我的unit testing项目包含一个app.config文件,其中包含: 引用的配置文件设置为“始终复制”到输出目录。 我validation了测试是从项目文件夹中的\ bin \ debug运行的,并且两个引用的配置文件都正确地复制到该文件夹​​。 但是,在运行测试时,我发现: ConfigurationManager.AppSettings不包含AppSettings.local.config中的任何键。 ConfigurationManager.AppSettings DOES包含otherSetting 。 ConfigurationManager.ConnectionStrings包含来自ConnectionStrings.local.config的所有键。 在中使用configSource属性而不是file也不起作用。 我管理配置文件的方式在很长一段时间内没有改变,并且一直运行良好。 问题肯定与ReSharper 10的升级相吻合。在ReSharper的unit testing设置中,我禁用了“影子复制程序集”和“使用单独的AppDomain”,并且“运行测试自”设置为项目输出文件夹。 我在更改这些设置后多次重启VS. 这听起来像是一个可能的ReSharper错误,还是我可能会遗漏一些明显的东西? 更新: 我已经降级到ReSharper 9.2,我的困境已经消失了。 所以我只能得出结论,这是一个ReSharper 10问题。 但是我不确定它是否是一个真正的错误(肯定是这样),或者如果我错过了某个地方的新设置,那么任何见解仍然会受到赞赏。

我可以设置unit testing多次运行并返回成功百分比吗?

我是unit testing的新手,并且一直在搜索网络,试图弄清楚如何进一步自动化我的unit testing。 我正在建立一个注册方案,我想要做的是用各种硬盘驱动器序列号,应用程序编号等测试它。我想生成一个注册密钥,然后检查它以确保它正确解码。 我希望通过各种输入自动运行测试(使用集成的Visual Studio测试环境),经过数千次运行后,找出成功和不成功的测试百分比。 这可能吗? 以下是我的测试方法: [TestMethod] public void GeneratingValidKeyTest() { int numReadDevices; string appNum = “123”; string hddSerial = “1234567890”; string numDevices = “12”; string regNumber = Registration.GenerateKey(appNum, numDevices, hddSerial); Assert.IsTrue(Registration.CheckKey(regNumber, appNum, out numReadDevices, hddSerial), “Generated key does not pass check.”); Assert.AreEqual(int.Parse(numDevices), numReadDevices,”Number of registered devices does not match requested number”); }

使用Shims for ZipFile进行unit testing

我正在尝试对使用ZipFile.OpenRead的一些代码进行unit testing,从ZIP中提取一些XML文件(用moq编写unit testing) 有没有办法用我自己的结果替换对ZipFile.OpenRead的调用? 我已经在类似的情况下使用垫片,但我无法弄清楚在这种情况下该做什么,并且关于垫片的文档非常稀疏。 这是(部分)需要unit testing的方法: public IEnumerable ExtractXmlFromZip(string fileName) { var configs = new List(); using (var archive = ZipFile.OpenRead(fileName)) { foreach (ZipArchiveEntry entry in archive.Entries) { if (entry.FullName.EndsWith(“.xml”, StringComparison.OrdinalIgnoreCase)) { LoadConfigfromZipArchiveEntry(entry, configs) } } } return configs; }

断言列表中字段的唯一性

我在C#中创建了一个列表,我想进行测试,看看Id字段的所有值是否都是唯一的。 public static List _reviews = new List { new RestaurantReview { Id = 1, Name = “McDonalds”, }, new RestaurantReview { Id = 2, Name = “Burger King”, }, } 因为我做了一些调试,我发现它正在通过列表运行,但我没有得到正确的测试值。 有人可以解释我在这里做错了吗? [TestMethod()] public void CheckReviewIds() { var FirstReview = ReviewsController._reviews.First(); bool AllUniqueIds = ReviewsController._reviews.All(s => s.Id == FirstReview.Id); Assert.IsFalse(AllUniqueIds); } 提前致谢。