0

モックに NMock2 を使用するいくつかの NUnit テストを実行しようとしています。これらのテストは、ビルド プロセスの一部として Makefile から実行されます。ただし、テストはロードできません。Monodevelop内からすべてを機能させることができます-コマンドラインから正しく取得できないようです。

これが私の大幅に単純化されたソースコードです。

using System;
using NUnit.Framework;
using NMock2;

[TestFixture]
public class DataConversionTests {

    NMock2.Mockery mock;

    [SetUp]
    public void SetUp() {}

    [Test]
    public void CheckKey() {}
}

Makefile を使用してテストをビルドする方法は次のとおりです。

all: test

clean:
    find . -name "*.dll" -delete

LIBS=-lib:/path/to/nmock2/bin/ -r:NMock2.dll -r:NUnit.Framework.dll 

Tests.dll : DataConversionTests.cs
    gmcs -out:Tests.dll -debug -target:library DataConversionTests.cs $(LIBS)

test : Tests.dll
    nunit-console Tests.dll

そして、ここに私が得る出力があります:

DataConversionTests.cs(8,24): warning CS0169: The private field `DataConversionTests.mock' is never used
Compilation succeeded - 1 warning(s)
nunit-console Tests.dll
NUnit version 2.4.8
Copyright (C) 2002-2007 Charlie Poole.
Copyright (C) 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov.
Copyright (C) 2000-2002 Philip Craig.
All Rights Reserved.

Runtime Environment - 
   OS Version: Unix 9.8.0.0
  CLR Version: 2.0.50727.1433 ( 2.10.9 (tarball Tue Apr 17 18:59:12 EDT 2012) )

.F
Tests run: 1, Failures: 1, Not run: 0, Time: 0.048 seconds

Test Fixture SetUp Failures:
1) DataConversionTests : System.TypeLoadException : Could not load type 'DataConversionTests' from assembly 'Tests, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'.
at System.Reflection.MonoCMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x0014a] in /private/tmp/monobuild/build/BUILD/mono-2.10.9/mcs/class/corlib/System.Reflection/MonoMethod.cs:538
at System.Reflection.MonoCMethod.Invoke (BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in /private/tmp/monobuild/build/BUILD/mono-2.10.9/mcs/class/corlib/System.Reflection/MonoMethod.cs:541
at System.Reflection.ConstructorInfo.Invoke (System.Object[] parameters) [0x0000e] in /private/tmp/monobuild/build/BUILD/mono-2.10.9/mcs/class/corlib/System.Reflection/ConstructorInfo.cs:62
at NUnit.Core.Reflect.Construct (System.Type type) [0x00023] in /private/tmp/monobuild/build/BUILD/mono-2.10.9/mcs/nunit24/NUnitCore/core/Reflect.cs:387

Test Case Failures:
1) DataConversionTests.CheckKey : TestFixtureSetUp failed in DataConversionTests

私は明らかに単純な問題を抱えていますが、それが何であるかはわかりません。これを機能させるには、何を変更する必要がありますか?

4

1 に答える 1

0

をローカルディレクトリにコピーし、NMock2.dllそのパスを使用しない場合、nunitはそれを正常に検出したように見え、テストに合格します。

これは、メンバー変数をクラスからメソッドに移動すると、nunitメッセージが、指定されたファイルを開いたりロードしたりできないことに関するメッセージに変更されたことに気付いたために促されました。

このdllをコピーする必要がないようにしたいので、誰かがより良い解決策を持っているなら、私はそれを受け入れます。

于 2012-05-08T01:28:55.233 に答える