Tag: unit testing

在没有测试整个应用程序的情况下,有没有办法让UnitTest成为类库(通用Windows)?

我需要UnitTest一个Class Library (Universal Windows) ,但是从“添加新项目”窗口,我只看到这个: 该项目使用App Container运行所有测试,它始终打开一个App。 由于我不需要所有这些开销,我想知道是否有unit testingUWP库的方法。

C#测试资源

我正在使用Microsoft Visual Studio Test Framework,我的一些测试需要一个xml文件作为输入。 目前我已将它们放在我的TestProject中的Resource目录下,并通过“.. \ .. \ whatever”路径名称访问它们。 我希望在使用测试资源文件时提供良好实践建议,因为我希望在所有这些情况下重用我的测试 – 直接来自VS 2010 – 在我的服务器上构建过程中 – 在透明的持续集成环境中(和简单的方式。

数据驱动的unit testing – CSV编码问题?

我有以下CSV文件,用于我的数据驱动unit testing: File;expected Resources.resx;default Resources.de.resx;de AttachmentDetail.ascx.it.resx;it SomeOtherFile.rm-CH.resx;rm-CH “文件”和“预期”是标题。 但是,如果我想在代码中得到“文件”列 TestContext.DataRow[“File”].ToString(); 我收到了错误 System.ArgumentException:列’File’不属于表.. 当我通过测试方法属性将CSV文件添加到现有测试用例时,似乎“文件”列在其名称前面有一些奇怪的符号,就像编码问题一样。 但是,如果我用记事本,Notepad ++甚至TextMate(在Mac上)打开CSV文件,我没有看到任何这样的迹象,我无法摆脱它们。 有人可以给我一个关于这个问题的建议吗?

如何测试依赖于当前日期的逻辑

我有这种方法取决于当前日期。 它检查今天是太阳,周一,周二还是周三,然后它给出了5天的交货时间。 如果它是星期四,星期五或星期六那么它给出了6天的交付周期来计算周末。 private DateTime GetEstimatedArrivalDate() { DateTime estimatedDate; if (DateTime.Now.DayOfWeek >= DayOfWeek.Thursday) { estimatedDate = DateTime.Now.Date.AddDays(6); } else { estimatedDate = DateTime.Now.Date.AddDays(5); } return estimatedDate; } 实际的估算逻辑更复杂。 为了这个问题,我简化了它。 我的问题是如何根据今天的日期为这样的事情编写unit testing?

我如何使用Moq IFindFluent来调用ToListAsync?

我正在测试MongoDB C#驱动程序的包装器。 我有这行代码: Collection.Find(predicate).ToListAsync(); 其中Collection的类型为IMongoCollection而Find(predicate)返回实现IFindFluent的实例。 ToListAsync()是将结果转换为列表的扩展,我假设。 我正在尝试编写unit testing,我很难处理这个问题。 我不能创建一个包装类,因为那就是我正在做的事情。 我更愿意这样做,所以ToListAsync()返回一个创建的列表或模拟Find()返回一些可以列出的列表。

Try..Catch块中的断言被捕获

刚刚遇到一些有趣的行为 – 被Catch块捕获的Assert 。 List consArray = new List(); try { Decimal d; Assert.IsTrue(Decimal.TryParse(item.Value, out d)); consArray.Add(d); } catch (Exception e) { Console.WriteLine(item.Value); Console.WriteLine(e); } 断言抛出AssertFailedException并将其catch 。 一直以为如果Assert失败,那么测试失败并且连续执行被中止。 但在那种情况下 – 测试继续进行。 如果以后没有发生任何错误 – 我得到绿色测试! 从理论上讲 – 这是正确的行为吗? 编辑:我明白这可能是.NET限制以及如何在MsTest中进行断言。 断言抛出exception。 因为catch – 捕获它所捕获的一切断言exception。 但理论上是正确的还是具体的MsTest?

如何在MSTest中处理currentDomain.UnhandledException

我尝试基于答案实现解决方案如何处理unit testing时在其他线程中引发的exception? ,但我仍然不明白在处理程序中要做什么。 我们假设我有一个测试: [TestMethod] void Test() { new Thread(() => { throw new Exception(); }).Start(); } 我有和所有测试的全局初始化: [AssemblyInitialize] public static void AssemblyInitialize(TestContext context) { AppDomain currentDomain = AppDomain.CurrentDomain; currentDomain.UnhandledException += currentDomain_UnhandledException; } static void currentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) { Exception ex = e.ExceptionObject as Exception; if (ex != null) Trace.WriteLine(ex); Assert.Fail(“Unhandled Exception in thread.”); […]

越过entity frameworkBeginTransaction

我试图理解unit testing中的模拟,并将unit testing过程集成到我的项目中。 所以我一直走过几个教程并重构我的代码以支持模拟,无论如何,我无法通过测试,因为我试图测试的数据库方法是使用事务,但是在创建事务时,我得到了 底层提供程序在Open上失败。 没有交易,一切正常。 我目前的代码是: [TestMethod] public void Test1() { var mockSet = GetDbMock(); var mockContext = new Mock(); mockContext.Setup(m => m.Repository).Returns(mockSet.Object); var service = new MyService(mockContext.Object); service.SaveRepository(GetRepositoryData().First()); mockSet.Verify(m => m.Remove(It.IsAny()), Times.Once()); mockSet.Verify(m => m.Add(It.IsAny()), Times.Once()); mockContext.Verify(m => m.SaveChanges(), Times.Once()); } // gets the DbSet mock with one existing item private Mock<DbSet> GetDbMock() […]

我怎样才能得到Resharper中止测试的理由?

我正在使用Resharper 9.2和NUnit 2.6.4以及~120unit testing。 有时当我开始运行测试时,resharper会在随机测试时停止并将其状态设置为Aborted并跳过其他测试。 这非常不方便,因为我手动运行了其余的测试。 有没有办法得到堕胎的原因,一些resharper测试运行日志或NUnit中的东西,以帮助解决我的问题? 我也尝试使用本机NUnit运行程序,但它有时会抛出不包含任何有用信息的exception(某些远程处理exception,它没有任何用处) 我试图设置“并行运行1个程序集”和“为每个程序集使用单独的AppDomain进行测试”,但它没有帮助。 UPD 我在调试模式下重现了这一点,调试unit testing刚刚关闭,在输出窗口中我发现: The program ‘[4572] JetBrains.ReSharper.TaskRunner.CLR4.exe: Program Trace’ has exited with code 0 (0x0). The program ‘[4572] JetBrains.ReSharper.TaskRunner.CLR4.exe: Managed (v4.0.30319)’ has exited with code -1073741819 (0xc0000005) ‘Access violation’. 似乎问题是外部库的不安全代码。

维护VS Test Project中unit testing方法之间的上下文

我想按顺序运行以下unit testing: 使用随机数创建新客户的名称,密码等。 检索刚刚创建的客户并断言其属性包含相同的随机数 在同一用户上调用ForgotPassword函数,使用相同的用户名随机数 如清楚所示,我需要生成一次随机数,并在3种测试方法中共享它。 我似乎找不到办法做到这一点。 我想过使用TestContext对象,但是为每个实例创建了它。 我尝试使用ClassInitialize()方法没有帮助,因为它是静态的,因此其他方法无法访问该数字。 知道如何实现我的目标吗?