Tag: nunit

如何从C#代码运行NUnit测试

我正在尝试编写一个接收文件并使用NUnit运行它的简单方法。 我设法使用NUnit的源代码构建的代码不起作用: if(openFileDialog1.ShowDialog() != DialogResult.OK) { return; } var builder = new TestSuiteBuilder(); var testPackage = new TestPackage(openFileDialog1.FileName); var directoryName = Path.GetDirectoryName(openFileDialog1.FileName); testPackage.BasePath = directoryName; var suite = builder.Build(testPackage); TestResult result = suite.Run(new NullListener(), TestFilter.Empty); 问题是我不断得到builder.Build抛出的exception,说明找不到程序集。 我错过了什么? 是否有其他方法从代码运行测试(不使用Process.Start)?

根据给定的精度评估两个双精度是否相等,而不是在一定的固定公差范围内

我正在运行NUnit测试来评估一些已知的测试数据和计算结果。 这些数字是浮点数的双倍数,所以我不指望它们完全相等,但我不确定如何将它们视为对于给定的精度相等。 在NUnit中,我们可以与固定的容差进行比较: double expected = 0.389842845321551d; double actual = 0.38984284532155145d; // really comes from a data import Expect(actual, EqualTo(expected).Within(0.000000000000001)); 并且对于零以下的数字工作正常,但随着数字的增加,公差确实需要改变,因此我们始终关注相同的精度位数。 具体来说,此测试失败: double expected = 1.95346834136148d; double actual = 1.9534683413614817d; // really comes from a data import Expect(actual, EqualTo(expected).Within(0.000000000000001)); 当然,更大的数字会因公差而失败。 double expected = 1632.4587642911599d; double actual = 1632.4587642911633d; // really comes from a data import […]

在Visual Studio 2010中使用代码覆盖率运行NUnit测试

我们最近从Visual Studio 2008升级到Visual Studio 2010.作为我们代码库的一部分,我们有一大堆NUnit测试。 我们希望能够在Visual Studio中运行这些unit testing,但启用了代码覆盖 。 我们有ReSharper,因此可以在Visual Studio中运行测试,但它不允许代码覆盖工具执行其操作并生成coverage统计信息。 有没有办法让这项工作,或者我们是否必须将测试转换为MSTest? 编辑:我们已经尝试过建议的工具: TestDriven.Net 这在Visual Studio中运行NUnit测试很好,甚至可以使用代码覆盖,但它还包括测试作为覆盖程序集的一部分。 似乎没有办法排除测试,但包括正在测试的程序集(我们的测试与他们测试的代码在不同的程序集中)。 我们也不想花费额外的2000英镑,这将花费我们为整个团队获得TestDriven.net。 加利奥 这没用。 为了获得覆盖输出,测试需要在Visual Studio测试运行器中运行。 Gallio不为NUnit提供此支持。 还有什么想法? 我们确实找到了几个开源尝试来让这种类型的东西工作,但是它们已经陈旧并且长时间没有被触及(因此不支持VS2010)。

“Hello World” – TDD方式?

自从我被介绍到TDD以来,我一直在思考这个问题。 哪个是构建“Hello World”应用程序的最佳方法? 这将在控制台上打印“Hello World” – 使用测试驱动开发。 我的测试会是什么样子? 和什么课程? 请求:没有“ 维基百科 ”链接到TDD是什么,我熟悉TDD。 只是好奇如何解决这个问题。

SpecFlow和复杂对象

我正在评估SpecFlow ,我有点卡住了。 我发现的所有样品基本上都是简单的物体。 我正在开发的项目严重依赖于复杂的对象。 一个接近的样本可能是这个对象: public class MyObject { public int Id { get; set; } public DateTime StartDate { get; set; } public DateTime EndDate { get; set; } public IList Children { get; set; } } public class ChildObject { public int Id { get; set; } public string Name { get; set; […]

如何以编程方式运行NUnit

我有一些引用NUnit的程序集,并使用单个测试方法创建一个测试类。 我能够获得此程序集的文件系统路径(例如“C:… \ test.dll”)。 我想以编程方式使用NUnit来运行此程序集。 到目前为止我有: var runner = new SimpleTestRunner(); runner.Load(path); var result = runner.Run(NullListener.NULL); 但是,调用runner.Load(path)会抛出FileNotFoundexception。 我可以通过堆栈跟踪看到问题是NUnit在堆栈中调用Assembly.Load(path)。 如果我将路径更改为“Test,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null”,那么我仍会得到相同的错误。 我已经向AppDomain.Current.AssemblyResolve添加了一个事件处理程序,以查看我是否可以手动解析此类型,但我的处理程序永远不会被调用。 让Assembly.Load(…)工作的秘诀是什么?

我应该使用AutoFixture来测试我的洋葱的核心元素,它没有依赖性吗?

这个问题来自我之前的问题: 如何使用OneTimeSetup? 特别是回答者之一的回答。 请参阅以下代码: [TestFixture] public class MyFixture { IProduct Product; [OneTimeSetUp] public void OneTimeSetUp() { IFixture fixture = new Fixture().Customize(new AutoMoqCustomization()); Product = fixture.Create(); } //tests to follow } AutoMoq仅用于创建模拟吗? 我问的原因是因为我之前正在阅读一个问题,其中回答者暗示它也用于创建普通类型,即不是模拟。 我想测试我的Onion的Core元素,它没有依赖关系。 因此我应该使用AutoFixture吗?

在Visual Studio中运行多个NUnit项目

我有一个包含多个项目的解决方案,包括NUnit Test项目。 所以解决方案看起来像这样(使用通用名称,这些不是实际名称): + Solution + Project1 + Project1.Test + Project2 + Project2.Test + Project3 + Project3.Test … 当我从Visual Studio中单击“开始调试”时,我想通过NUnit GUI或控制台应用程序运行所有NUnit测试。 现在,我所做的是添加一个名为TestRunner的新类库,并将其设置为StartUp项目(我已经读过,我真的不需要这样做,我可以右键单击该项目并单击’Debug >开始新实例’)。 然后在Debug页面的项目属性中,我将’Start Action’设置为’Start external program’并选择nunit-console.exe(看起来nunit.exe GUI不支持多个程序集作为输入参数)。 然后在’命令行参数’中输入每个项目的路径。 像这样: 设置http://sofzh.miximages.com/c%23/30ku3xu.jpg 这似乎工作正常,但我想知道是否有更好的方法来做到这一点(也许我不需要额外的项目,或者可能有一种更简单的方法从Visual Studio中运行多个NUnit测试项目)。 任何改善这一点的建议都将受到赞赏。 运行NUnit 2.5.9和Visual Studio 2008。

指数超出范围。 必须是非负的且小于集合的大小?

我这样做很简单,我得到这个错误。 当我将TRUE更改为FALSE时它不会给出错误,但测试真正的错误…但我需要通过测试,我不明白..有人可以帮忙吗? C#visual studio 2010 NUnit [Test] public void prueba1() { List lista1 = new List(); lista1.Add(1); lista1.Add(2); lista1.Add(3); for (int i = 0; i < lista1.Count; i++) { Console.WriteLine(lista1[i]); Assert.True(lista1[i]<lista1[i+1]); }

nunit-console不运行使用TestCase属性参数化的测试

尝试运行使用TestCase属性参数化的Nunit测试。 像这样的东西: [TestFixture] public class MyClass { [Test] [TestCase(“option1”)] [TestCase(“option2”)] public void Test1(string id) { } } 当我尝试使用nunit控制台运行此测试时 nunit-console.exe MyProject.dll /run:MyNamespace.MyClass.Test1 它工作正常。 但在尝试运行参数化时: nunit-console.exe MyProject.dll /run:MyNamespace.MyClass.Test1(“option1“) 它只是显示: 测试运行:0,错误:0,失败:0,不确定:0,时间:0.0269838秒未运行:0,无效:0,忽略:0,跳过:0