Tag: nunit

有没有办法让每个类运行一次SetUpFixture而不是每个名称空间运行一次?

脚本 首先,我是新手测试 – 所以请耐心等待。 在我的测试项目中 ,有一个Controllers文件夹。 Controllers文件夹可能包含ControllerATest.cs,ControllerBTest.cs和ControllerCTest.cs。 因为我的命名空间与我的文件夹结构一致,所以它们共享命名空间MyProject.Tests.Controllers。 根据我在NUnit SetUpFixture文档中读到的内容,此命名空间内的[SetUpFixture]将为整个命名空间运行一次。 也就是说,如果我一次运行所有控制器测试 – SetUpFixture将只执行一次。 问题 正如我所说,每个控制器测试共享一个命名空间。 SetUpFixtures适用于整个命名空间。 如果我希望每个控制器都有自己的 SetUpFixture怎么办? 当SetUpFixtures应用于整个名称空间时,这是一个问题。 我想要的是执行一次的东西,而不是每次测试。 我在SetUpFixture的SetUp中做的一件事就是实例化一个控制器。 当然,我可以在SetUpFixture中实例化所有3个控制器,但是当我可能只测试ControllerC时,这看起来很难看。 这真的不干净。 因此,我想要一个仅适用于它出现的类的SetUpFixture,例如ControllerCTests。 根据我的阅读,NUnit似乎无法实现这一特定function。 如果NUnit无法实现,那么我认为这不是常见的情况。 如果这不是一个常见的情况,我做错了。 我的问题是,什么? 也许我的测试结构已关闭,需要更改。 或者NUnit可能有可能吗? 码 我想要的结构的一个例子: namespace MyProject.Tests.Controllers { public class ControllerATests { private static IMyProjectRepository _fakeRepository; private static ControllerA _controllerA; [SetUpFixture] public class before_tests_run { [SetUp] public void […]

有没有人在.NET中成功模拟过Socket类?

我试图在C#中模拟出System.net.Sockets.Socket类 – 我尝试使用NUnit模拟但它不能模拟具体的类。 我也尝试过使用Rhino Mocks但它似乎使用了该类的真实版本,因为它在调用Send(byte [])时抛出了SocketException。 有没有人使用任何模拟框架成功创建和使用Socket模拟?

测试没有预期的exception

我想创建NUnit测试以确保我的函数不会抛出exception。 是否有一些特定的方法来做,或者我应该写 [Test] public void noExceptionTest() { testedFunction(); } 如果没有抛出exception,它会成功吗?

基类中的NUnit和

我正在使用NUnit查看一些测试代码,NUnitinheritance自包含[SetUp]属性的基类: public class BaseClass { [SetUp] public void SetUp() { //do something } } [TestFixture] public class DerivedClass : BaseClass { [SetUp] public void SetUp() { //do something else, with no call to base.SetUp() } //tests run down here. //[Test] //[Test] //etc } 派生类肯定需要在基类’SetUp()方法中完成的工作。 我是否遗漏了某些内容,或者在运行派生类的测试时是否会调用基类中的SetUp()方法? [SetUp]属性有什么特别之处可以确保在另一个之前调用一个属性吗?

从Nunit3-console.exe运行Individual Test

当我跑 nunit3-console.exe (myfilepath)\dll file 控制台运行器运行我的所有测试。 我需要运行什么命令才能运行单独的测试? 我试过了 nunit3-console.exe /run:namespace.class.method (myfilepath)\dll file 它说我使用了无效的论点。 有人能为我提供正确的语法吗? 谢谢

unit testing控制台c#app的最佳方式

我有一个简单的控制台应用程序 它被普通的主要解雇了,整个程序都在main中。 它使用命令行分析器库 。 然后我在解决方案中有第二个项目,包含应用程序的unit testing。 但我似乎没有找到从测试中启动主程序进程的好方法。 我当前启动该过程的代码看起来像这样。 … process = new Process(); process.StartInfo.FileName = “FooBar”; process.StartInfo.Arguments = arguments; // use it to start from testing environment process.StartInfo.UseShellExecute = false; // redirect outputs to have it in testing console process.StartInfo.RedirectStandardOutput = true; process.StartInfo.RedirectStandardError = true; … 我试过设置 process.StartInfo.WorkingDirectory 至 AppDomain.CurrentDomain.BaseDirectory 和 Environment.CurrentDirectory; 但是,我是否必须指定控制台应用程序可执行文件的完整相对路径,或者是否有一种改进的方法来启动“已测试”应用程序的进程? 首先,我在“主要”程序中将我的测试作为一个类,然后它工作得很好。 当我将测试移动到他们自己的项目时,问题就开始了。 […]

如何并行运行NUnit(Selenium Grid)测试?

我当前的项目使用NUnit进行unit testing并驱动用Selenium编写的UAT。 开发人员通常在VS.Net 2003中使用ReSharper的测试运行器运行测试,我们的构建盒通过NAnt将其踢出。 我们希望并行运行UAT测试,以便我们可以利用Selenium Grid / RC,以便它们能够更快地运行。 有没有人对如何实现这一点有任何想法? 和/或针对多个浏览器环境测试Selenium测试而不自动编写重复测试的最佳实践? 谢谢。

为什么我们需要模拟框架?

我使用过编写过NUnit测试的代码。 但是,我从未使用过模拟框架。 这些是什么? 我理解dependency injection以及它如何帮助提高可测试性。 我的意思是所有依赖项都可以在unit testing时进行模拟。 但是,为什么我们需要模拟框架呢? 我们不能简单地创建模拟对象并提供依赖关系。 我在这里错过了什么吗? 谢谢。

如何将新的List {1}放入NUNIT TestCase中?

我有方法: public static int Add(List numbers) { if (numbers == null || numbers.Count == 0) return 0; if (numbers.Count == 1) return numbers[0]; throw new NotImplementedException(); } 这是我对它的测试,但它不喜欢TestCase中的new List {1} : [TestCase(new List{1}, 1)] public void Add_WithOneNumber_ReturnsNumber(List numbers) { var result = CalculatorLibrary.CalculatorFunctions.Add(numbers); Assert.AreEqual(1, result); } 它给了我错误: An attribute argument must be a constant expression, […]

那里最好的Nunit测试跑者是什么?

最近进入测试驱动开发我使用Nunit测试运行器作为resharper的一部分。 它有一些缺点,没有运行测试的快捷方式,我必须去寻找Nunit测试运行器,使用鼠标调用它。 它有一个很好的GUI,并将结果显示为IDE的一部分。 其他人用什么来运行针对.net项目的unit testing? 我搜索了其他应用程序,包括来自Nunit.org的MBUnit和unit testing应用程序,并想知道最重要的是什么。