在NUnit中构建和加载文件

时间:2013-01-06 21:22:45

标签: nunit

我正在读一本名为“单元测试的艺术”的书。我已经达到了需要测试我使用NUNit编写的测试方法的程度。作者指示构建项目,然后找到构建的程序集文件的路径,并提供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"); 
        } 

    }
}

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

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

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

答案 2 :(得分: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]等标记的东西))