Tag: nunit

为什么在不使用async / await关键字时异步unit testing失败?

根据这个讨论 ,以下两种方法应该没有区别: public async Task Foo() { await DoSomethingAsync(); } public Task Foo() { return DoSomethingAsync(); } 实际上,似乎对于非常简单的方法, 没有 async / await关键字的调用将是首选,因为它们会消除一些开销。 然而,这显然并不总是在unit testing中起作用。 MSTest的 [TestClass] public class AsyncTest { [TestMethod] public async Task Test1() { await Task.Delay(0); } [TestMethod] public Task Test2() { return Task.Delay(0); } } NUnit的 [TestFixture] public class AsyncTest { [Test] […]

在dotnet核心中运行NUnit测试

我正在尝试使用dotnet core为我的c#项目运行unit testing。 我正在使用docker容器进行运行时。 Dockerfile FROM microsoft/dotnet:0.0.1-alpha RUN mkdir /src WORKDIR /src ADD . /src RUN dotnet restore “NUnit”和“NUnit.Runners”已添加到project.json中 “version”: “1.0.0-*”, “compilationOptions”: { “emitEntryPoint”: true }, “dependencies”: { “NETStandard.Library”: “1.0.0-rc2-23811”, “NUnit”: “3.2.0”, “NUnit.Runners”: “3.2.0” }, “frameworks”: { “dnxcore50”: { } } 使用以下输出成功运行dotnet restore … log : Installing NUnit.ConsoleRunner 3.2.0. log : Installing NUnit.Extension.NUnitV2ResultWriter 3.2.0. log […]

NUnit在包含数组时无法识别TestCase

这是非常简单但令人烦恼的行为,我遇到了NUnit: 我有一些像这样的测试: [Test] [TestCase( 1, 2, “hello” )] [TestCase( 3, 5, “goodbye” )] public void MyClass_MyMethod( int a, int b, string c ) { Assert.IsTrue( a < b ); } 这很好用,在ReSharper NUnit窗格中,我可以看到每个TestCase在结果中获得自己的响应。 我有第二个看起来像这样的TestCase: [Test] [TestCase( 1, 2, new long[] { 100, 200 })] [TestCase( 5, 3, new long[] { 300, 500 })] public void MyClass_MyOtherMethod( […]

如何在C#中加载我的测试数据?

我很难找到一种在C#中加载测试数据的简单方法。 在Java中,我使用以下代码加载资源: … public static InputStream loadResource(String resource) throws LoadException { InputStream is = TestUtils.class.getResourceAsStream(resource); if (is == null) { throw new LoadException(“Error loading ‘” + resource + “‘”); } return is; } … public static void main(String[] args) { InputStream is = TestUtils.loadResource(“/resourcelocation”); } 我试图使用C#资源文件,但我发现加载和操作它很尴尬。 有没有更简单的方法来加载C#中的资源?

在C#控制台应用程序中运行NUnit测试

我需要在控制台应用程序中以编程方式运行NUnit测试。 使用NUnit的nunit-console.exe不是一个选项。 我目前的代码是: var testRunner = new SimpleTestRunner(); var package = new TestPackage(“MyTests.dll”, new List { (“c:\MyTests\MyTests.dll” }); testRunner.Load(package); 当我调用Load时,NUnit会在当前进程的目录中查找dll。 所以我得到一个类似“c:\ MyTestRunner \ bin \ debug \ MyTests.dll”的FileNotFoundException。 如何强制它在不同的目录中查找dll?

TeamNet对.Net项目的增量测试

我正在构建模块化WPF应用程序。 每个屏幕都是一个高度独立和孤立的单元。 唯一共享的东西 – shell和一个带有可重用服务的外观接口的公共库(消息总线,持久性,窗口管理等)。 由于模块是松散耦合的,因此在单个模块更改时重新测试所有内容是没有意义的。 我想只测试改变了什么。 如果公共库中有变化 – 应该重新测试所有内容。 从源代码控制diff中,您可以轻松获取已更改的文件列表,从而解决受影响的项目(csproj文件包含要编译的所有文件)。 您还可以从csproj文件(谁使用它,谁受影响)解决项目依赖项。 所有这些信息应足以说明实际需要测试的内容。 所以问题听起来可以解决。 有没有人用TeamCity做过这个? 有什么建议? 我看到有一个Java人员的解决方案: http : //blog.jetbrains.com/teamcity/2012/03/incremental-testing-with-teamcity/ 那个.net领域怎么样?

模块化Selenium RC测试脚本的最佳实践

我在Visual Studio(C#)中创建Selenium RC测试脚本。 我正在努力重新考虑测试; 我的所有测试都在一个文件中。 我将非常感谢网站,书籍等的任何输入和/或指示,以了解模块化测试。 我必须在不同的站点(相同的应用程序,但为不同的客户端和登录配置不同)上运行相同的测试,这些测试95%相同。 有人愿意提供一些很好的例子或最佳实践吗? 谢谢!

使用文件IO的unit testing方法

我正在努力养成编写unit testing的习惯,我之前写过一些,但它们通常都很基础……我想开始转向TDD,因为我想提高质量我的代码(设计和结构) – 减少耦合,同时希望减少回归到可测试构建的回归数量。 我采取了一个相对简单的项目,我开始工作。 生成的程序监视文件夹,然后对该文件夹中的文件执行操作。 以下是从项目中提取的一些代码的典型示例: private string RestoreExtension(String file) { var unknownFile = Path.GetFileName(file); var ignoreDir = Path.GetDirectoryName(file) + “\\Unknown”; string newFile; //We need this library for determining mime if (CheckLibrary(“urlmon.dll”)) { AddLogLine(“Attempting to restore file extension”); var mime = GetMimeType(BufferFile(file, 256)); var extension = FileExtensions.FindExtension(mime); if (!String.IsNullOrEmpty(extension)) { AddLogLine(“Found extension: ” + […]

从类库中访问App.Config设置通过unit testing项目调用

我有以下设置: ASP.net 3.5网站项目 带有业务逻辑的C#类库 用于unit testing的C#类库 业务逻辑库执行所有数据库访问。 它通过访问System.Configuration.ConfigurationManager.ConnectionStrings从Web站点的web.config文件获取连接字符串。 当网站调用库时,这可以正常工作,因为库会查找调用者的配置。 我希望能够通过unit testing类库测试我的业务逻辑。 我在测试类库的根目录中放了一个App.config文件。 根据我的阅读,当测试库调用属于业务逻辑库的数据访问过程时,应该访问和使用测试库的App.config文件中的连接设置。 但是,当我尝试运行unit testing时,我收到错误,表明测试库的App.config文件(和/或其内容)未成功访问。 我对配置属性的检索(来自业务逻辑库)如下所示: public SqlConnection MainConnection { get { string conn = “”; try { conn = System.Configuration.ConfigurationManager.ConnectionStrings[“connString”].ConnectionString; } catch { // might be calling from test project. Need to reference app settings conn = System.Configuration.ConfigurationManager.AppSettings[“connString”]; } return new SqlConnection(conn); } } […]

如何断言两个列表包含NUnit中具有相同公共属性的元素?

我想声明两个列表的元素包含我期望的值,如: var foundCollection = fooManager.LoadFoo(); var expectedCollection = new List() { new Foo() { Bar = “a”, Bar2 = “b” }, new Foo() { Bar = “c”, Bar2 = “d” } }; //assert: I use AreEquivalent since the order does not matter CollectionAssert.AreEquivalent(expectedCollection, foundCollection); 但是上面的代码不起作用(我猜是因为.Equals()对于具有相同值的不同对象不返回true)。 在我的测试中,我只关心公共属性值,而不关心对象是否相等。 我该怎么做才能做出我的断言?