0

「The Art of Unit Testing」という本を読んでいます。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"); 
        } 

    }
}
4

3 に答える 3

0

ネイティブの nunit ランナーを使用する場合は、通常、次のようなクラスを使用します

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

また、(プロジェクトのプロパティで) スタートアップ オブジェクトとして設定する必要があります。

また、nunit インストール ディレクトリ (通常はプログラム ファイル) にある nunit-gui-runner.dll を参照する必要があります。私のは

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

ネイティブの nunit ランナーには問題がありますが、デバッグ時に resharper (6.1) テスト ランナーが不安定であることがわかりました。また、nunit で使用できるさまざまな種類のパラメーター化されたテストをすべて理解するわけではありません。うまくいけば、これは新しいバージョンでは当てはまりません - UI がはるかに優れています。

上記の問題は2つの別々のものです.1つは、スタートアップオブジェクトが設定されていないためです。もう1つは、アセンブリとは何かについて混乱しているように聞こえます。コンパイル時に生成される実行可能ファイルには、アセンブリが含まれます。nunit を指定すると、動作するはずです (そこに nunit が含まれていると仮定します ([Test] などでタグ付けされたものなど))。

于 2014-01-02T15:49:19.807 に答える
0

クラス プロジェクト Loganalyzer を実行しようとしているように見えますが、おそらく何らかのテスト ランナーを使用したいと思うでしょう。私は TestDriven.net の方が好きです。

于 2013-01-07T05:16:29.883 に答える
0

NUnit は単なるテスト フレームワークです (非常に単純化されており、テストのセットアップ方法などのルールが指定されています)。

必要なのは、実際にそれらを実行するためのアプリケーションまたはプラグインです。concole runner、またはたとえば NUnit に付属するGUI ランナー、または TestDriven.net (優れていると聞いています) でテストを実行します。

個人的には、Resharperに付属のランナーを使用しています(ただし、無料で試せるのは 1 か月ほどです)。

要点は、実行可能なプロジェクトではなく、テストするものを含むクラス ライブラリがあることです。ランナーはテストを実行し、テストはコードを呼び出します。

于 2013-01-07T16:21:23.990 に答える