Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在NUnit中构建和加载文件_Nunit - Fatal编程技术网

在NUnit中构建和加载文件

在NUnit中构建和加载文件,nunit,Nunit,我正在看一本书,名叫《单元测试的艺术》。我已经到了需要测试我使用NUNit编写的测试方法的地步。作者指示生成项目,然后找到生成的程序集文件的路径,并为NUnit提供测试路径 我的问题是,我似乎无法获取此程序集文件路径。它在哪里 另外,当我运行代码时,会出现以下错误: Error 2 Program 'c:\Users\Documents\Visual Studio 2012\Projects\Loganalyzer\Loganalyzer\obj\Debug\Loganalyze

我正在看一本书,名叫《单元测试的艺术》。我已经到了需要测试我使用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"); 
        } 

    }
}

似乎您正在尝试运行类项目Loganalyzer,但您可能希望使用某种测试运行程序。我更喜欢TestDriven.net。

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

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

就我个人而言,我使用的是随附的跑步者(尽管它只免费试用一个月左右)


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

如果您想使用本机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]等标记的内容))

您可以发布您的测试夹具/类吗。@ChrisMissal,我已经发布了我的测试类。我将感谢你的帮助,因为从昨天起我一直没有取得任何进展。