Tag: nunit

我应该测试那些方法不会抛出exception吗?

我正在进行unit testing的第一步,并编写了(以及其他)这两种方法: [TestCase] public void InsertionSortedSet_AddValues_NoException() { var test = new InsertionSortedSet(); test.Add(5); test.Add(2); test.Add(7); test.Add(4); test.Add(9); } [TestCase] public void InsertionSortedSet_AddValues_CorrectCount() { var test = new InsertionSortedSet(); test.Add(5); test.Add(2); test.Add(7); test.Add(4); test.Add(9); Assert.IsTrue(test.Count == 5); } 真的需要NoException方法吗? 如果要抛出exception,它也将被抛出CorrectCount方法。 我倾向于将它保留为2个测试用例(可能将重复的代码重构为另一种方法),因为测试应该仅测试单个事物,但也许我的解释是错误的。

使用nunit重新加载app.config

我有多个NUnit测试,我希望每个测试都使用特定的app.config文件。 有没有办法在每次测试之前将配置重置为新的配置文件?

Visual Studio 2012伪造的UnitTestIsolation工具无法初始化

刚刚安装vs 2012更新2( http://www.microsoft.com/en-us/download/details.aspx?id=36833 ),所以我可以使用vs fakes / shims来测试一些难以测试的代码。 当我创建假assembly并且所有引用都按预期添加到unit testing项目中时,一切都编译得很好。 但是在任何测试中运行以下代码…… using (ShimsContext.Create()) { //Doesn’t matter whats in here } 引发以下exception…… Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationException : UnitTestIsolation instrumentation failed to initialize. Please restart Visual Studio and rerun this test 堆栈跟踪完全exception…… Test ‘Abot.Tests.Unit.Core.HapHyperLinkParserTest.HyperLinkParserTest.GetLinks_AreaTags_ReturnsLinks’ failed: Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationException : UnitTestIsolation instrumentation failed to initialize. Please restart Visual Studio and rerun this test at […]

ASP.NET MVCunit testing自定义AuthorizeAttribute

我正在研究ASP.NET MVC 4项目(.NET框架4),我想知道如何正确地unit testing自定义AuthorizeAttribute(我使用NUnit和Moq)。 我AuthorizeCore(HttpContextBase httpContext)了2个方法: AuthorizeCore(HttpContextBase httpContext)和HandleUnauthorizedRequest(AuthorizationContext filterContext) 。 正如您所看到的,这些方法分别需要HttpContextBase和AuthorizationContext ,但我不知道如何模拟它们。 这是我得到的: [Test] public void HandleUnauthorizedRequest_UnexistingMaster_RedirectsToCommonNoMaster() { // Arrange var httpContext = new Mock(); var winIdentity = new Mock(); winIdentity.Setup(i => i.IsAuthenticated).Returns(() => true); winIdentity.Setup(i => i.Name).Returns(() => “WHEEEE”); httpContext.SetupGet(c => c.User).Returns(() => new ImdPrincipal(winIdentity.Object)); // This is my implementation of IIdentity var requestBase […]

Selenium错误:服务器没有响应url http:// localhost:7055

我正在使用Selenium,C#,NUnit编写测试,有时我得到以下错误: – OpenQA.Selenium.WebDriverException:服务器没有响应url htt://lоcalhost:7055 / hub / session / 8dd13f5c-7ca6-4aa6-babc-f0ff6d940f0a / element 这是堆栈跟踪: OpenQA.Selenium.WebDriverException:在OpenQA.Selenium.Remote.HttpCommandExecutor.CreateResponse(WebRequest请求)中,没有服务器对url htt:// localhost:7055 / hub / session / 8dd13f5c-7ca6-4aa6-babc-f0ff6d940f0a / element的响应c:\ Projects \ WebDriver \ trunk \ dotnet \ src \ WebDriver \ Remote \ HttpCommandExecutor.cs:第115行,位于c:\ Projects \ WebDriver \ trunk \ dotnet \ src中的OpenQA.Selenium.Remote.HttpCommandExecutor.Execute(命令commandToExecute) \ WebDriver \ Remote \ HttpCommandExecutor.cs:在c:\ Projects […]

由NUnit项目引起的System.BadImageFormatException

今天是个好日子。 我整天都在工作中遇到同样的问题,并且正在努力寻找任何新的路径。 当我的解决方案在服务器上构建时,我收到以下错误。 我在解决方案中运行/调试所有测试没有问题,并且构建正常。 服务器和我的电脑都是x64。 我已经遵循了许多建议,但我发现这些建议都无济于事。 在所有配置下,我已将Platform Target设置为x86,用于我的解决方案中的所有项目。 我知道有一个nunit-console-x86.exe可能会有所不同,但我不知道在代码中指定这个位置。 请注意我已经开始上网了,如果我错过了什么,请道歉。 System.BadImageFormatException:无法加载文件或程序集 ‘Spin.TradingServices.DataAcquisition.Test.NUnit,Version = 1.0.12103.2060,Culture = neutral,PublicKeyToken = null’或其依赖项之一。 尝试加载格式不正确的程序。 文件名:’Spi​​n.TradingServices.DataAcquisition.Test.NUnit,Version = 1.0.12103.2060,Culture = neutral,PublicKeyToken = null’ 服务器堆栈跟踪:System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName,String codeBase,Evidence assemblySecurity,RuntimeAssembly locationHint,StackCrawlMark&stackMark,Boolean throwOnFileNotFound,Boolean forIntrospection,Boolean suppressSecurityChecks)在System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef,Evidence) assemblySecurity,StackCrawlMark&stackMark,Boolean forIntrospection,Boolean suppressSecurityChecks)位于NUnit.Core.Builders.TestAssemblyBuilder.Load(String path)的System.Reflection.Assembly.Load(AssemblyName assemblyRef),位于NUnit.Core.Builders.TestAssemblyBuilder.Build(String assemblyName)位于NUnit.Core.Core.Tore上的NUnit.Core.Tore.Core.TestSuiteBuilder.Build(TestPackage包)的NUnit.Core.TestSuiteBuilder.BuildSingleAssembly(TestPackage包)中的NUnit.Core.Builders.TestAssemblyBuilder.Build(String assemblyName,String testName,Boolean autoSuites)上的布尔autoSuites) NUnit.Core.Proxy的.Core.SimpleTestRunner.Load(TestPackage包) 在System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md,Object []的NUnit.Core.moreTestRunner.Load(TestPackage包)的NUnit.Core.ProxyTestRunner.Load(TestPackage包)上的TestRunner.Load(TestPackage包) System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg,Int32 methodPtr,Boolean fExecuteInContext)中的args,Object server,Int32 methodPtr,Boolean fExecuteInContext,Object […]

使用NUnit在不同的appdomain中运行unit testing

我似乎遇到了一个问题,我们正在使用的应用程序使用Ninject内核,并包含一个使用WCF调用内容(username,token …)收集的特定配置。 基于特定配置,用户被分配了应用程序的权限,这通过Ninject内核中的特定实例进行屏蔽。 我们不能只重新组合Ninject内核,我们想要做的是运行几个Nunit测试,但是在一个单独的应用程序域中运行它们(每次使用不同的设置重新创建内核)。 我只找到了在不同应用领域运行整个测试项目的方法,但没有测试每个测试。 有办法解决这个问题吗? 不幸的是,Ninject配置不在我们这边,我们必须以这种方式“生活”。

NUnit:为什么不Assert.Throws Catch My ArgumentNullException?

我是在尊敬的John Skeet先生的要求下重新发布这个问题的,他建议我设计一个简单的测试程序,隔离并演示我遇到的问题并重新发布问题。 这个问题源于这个问题,如果听起来很熟悉,请原谅我。 您可以从中收集有关此问题的额外详细信息。 我遇到的问题是关于来自NUnit 2.5.9的Assert.Throws 。 有时,它将无法捕获TestDelegate调用的方法中抛出的任何exception。 我已经在下面的代码中以可重现的方式确定了这种行为。 (诚​​然,这可能是Fails On My Machine™的情况)。 为了重现错误,我创建了一个包含两个C#DLL项目的解决方案: 第一个包含一个类,只有一个公共方法。 该方法是一种扩展方法,它封装了创建SqlCommand所需的逻辑,填充其参数并在其上调用ExecuteScalar 。 该项目不包括其他参考。 第二个包含一个带有两个方法的类,用于测试第一个DLL中的方法是否按预期工作。 该项目引用了第一个,并包含对NUnit Framework的引用。 没有引用其他程序集。 当我在调试器中单步执行测试时,我会观察到以下内容: Assert.Throws正确调用ExecuteScalar扩展方法。 正如预期的那样,参数值为null。 ExecuteScalar测试其参数的空值。 调试器确实命中并执行包含throw new ArgumentNullException(…) 。 执行throw ,应用程序的控制不会立即转移到Assert.Throws 。 相反,它继续在ExecuteScalar的下一行。 下一行代码执行后,调试器就会中断,并显示错误“参数nullexception未被用户代码处理”。 下面给出了隔离此行为的源代码。 扩展方法 namespace NUnit_Anomaly { using System; using System.Data; using System.Data.SqlClient; public static class Class1 { public static T ExecuteScalar(this […]

如何从我的代码中运行NUnit

我想使用NUnit在我的插件中运行unit testing,但它需要在我的应用程序的上下文中运行。 为了解决这个问题,我试图开发一个运行NUnit的插件,然后NUnit将在应用程序的上下文中执行我的测试。 我没有找到关于这个主题的具体文档,所以我在这里和那里挖了一条信息,然后我得到了下面的一段代码(类似于我在StackOverflow中找到的代码): public static void Main() { SimpleTestRunner runner = new SimpleTestRunner(); TestPackage package = new TestPackage( “Test” ); string loc = Assembly.GetExecutingAssembly().Location package.Assemblies.Add( loc ); if( runner.Load(package) ) { TestResult result = runner.Run( new NullListener() ); } } 结果变量说“没有TestFixture”,虽然我知道它确实存在。 实际上我的测试文件包含两个测试。 使用我发现的另一种方法,通过以下代码总结: TestSuiteBuilder builder = new TestSuiteBuilder(); TestSuite testSuite = builder.Build( package ); […]

Moq并设置DB Context

我有一个Entity Framework数据库上下文文件。 我正在尝试在NUnit中设置Moq框架。 目前接收Moq Nunit测试的错误如下。 如何设置DBContext,并将项目添加到产品表? “没有为此DbContext配置数据库提供程序。可以通过覆盖DbContext.OnConfiguring方法或在应用程序服务提供程序上使用AddDbContext来配置提供程序。如果使用AddDbContext,则还要确保您的DbContext类型接受DbContextOptions对象它的构造函数并将其传递给DbContext的基础构造函数。“ 电子DB数据库文件 public partial class ElectronicsContext : DbContext { public ElectronicsContext() { } public ElectronicsContext(DbContextOptions options) : base(options) { } public virtual DbSet Product { get; set; } public virtual DbSet ProductCategory { get; set; } Startup.cs var connection = @”Server=localhost;Database=Electronics;Trusted_Connection=True;ConnectRetryCount=0″; services.AddDbContext(options => options.UseSqlServer(connection)); Moq Nunit测试 [SetUp] public void […]