0

我正在关注一本名为“单元测试的艺术”的书。我已经到了需要测试我使用 NUUnit 编写的测试方法的地步。作者指示构建项目,然后找到构建的程序集文件的路径,并给出 NUnit 的路径进行测试。

我的问题是我似乎无法获取此程序集文件路径。它位于哪里?

另外,当我运行我的代码时,我收到以下错误:

   Error    2   Program 'c:\Users\Documents\Visual Studio 2012\Projects\Loganalyzer\Loganalyzer\obj\Debug\Loganalyzer.exe' does not contain a static 'Main' method suitable for an entry point  c:\users\documents\visual studio 2012\Projects\Loganalyzer\Loganalyzer\CSC  Loganalyzer

这是我的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Loganalyzer
{
    public class LogAnalyzer
    {
        public bool IsValidLogFileName(string fileName)
        {
            if (!fileName.EndsWith(".SLF"))
            {
                return false;
            }
            return true;
        }
    }
}

我正在按照书中的确切示例进行操作,但如您所见,无法使其正常工作。我会感谢你们的帮助。

using Loganalyzer;
using NUnit.Framework;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace LogAnalyzerTest
{
    [TestFixture]
    class LogAnalyzerTest
    {

        [Test]
        public void IsValidFileName_validFile_ReturnsTrue()
        {
            //Arrange ( Arranges objects, creating and setting them up as necessary). 
            LogAnalyzer analyzer = new LogAnalyzer();

            //Act 
            bool result = analyzer.IsValidLogFileName("whatever.SLF"); 

            //Assert ( Asserts that something is as expected) 
            Assert.IsTrue(result, "file name should be valid"); 
        } 

    }
}
4

3 回答 3

0

似乎您正在尝试运行您的类项目 Loganalyzer,但您可能想要使用某种测试运行器。我更喜欢 TestDriven.net。

于 2013-01-07T05:16:29.883 回答
0

NUnit 只是测试框架(非常简化,它指定了如何设置测试等的规则)。

您需要的是一些应用程序或插件来实际运行它们。您可以在concole runner或 NUnit 附带的GUI runner中运行测试,或者在 TestDriven.net(我听说它非常好)中运行测试。

就个人而言,我使用Resharper附带的跑步者(尽管只能免费试用一个月左右)。

关键是你没有一个可执行的项目,而是一个包含要测试的东西的类库。运行程序运行您的测试,然后调用您的代码。

于 2013-01-07T16:21:23.990 回答
0

如果您想使用本机 nunit 运行器,您通常使用这样的类

static class NUnitLauncher
{
    [STAThread]
    static void Main()
    {
        AppEntry.Main(new[] { Assembly.GetExecutingAssembly().Location });
    }
}

您还必须将其设置为启动对象(在项目的属性中)。

您还需要参考 nunit-gui-runner.dll,您可以在 nunit 安装目录(通常是程序文件)中找到它。我的在

C:\Program Files (x86)\NUnit 2.5.7\bin\net-2.0\lib

本地 nunit 运行器有问题,但我发现 resharper (6.1) 测试运行器在调试时不稳定 - 它有时会随机爆炸。它也不了解您可以在 nunit 中进行的所有不同类型的参数化测试。希望在较新的版本中不是这种情况——它有一个更好的用户界面。

您上面描述的问题是两件不同的事情 - 一件听起来像是因为您没有设置启动对象;另一个听起来像是对程序集的混淆。编译时生成的可执行文件将包含一个程序集 - 如果您将 nunit 指向它,那么它应该可以工作(假设它有一些 nunit 东西在那里(例如用 [Test] 标记的东西等))

于 2014-01-02T15:49:19.807 回答