我正在读一本名为“单元测试的艺术”的书。我已经达到了需要测试我使用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");
}
}
}
答案 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]等标记的东西))