Domanda

I'm trying to run some NUnit tests that use NMock2 for mocking. These tests are to be run from a Makefile as part of our build process. However the tests fail to load. I can get everything working from within Monodevelop - just cant seem to get it right from the command line.

Here's my massively simplified source code:

using System;
using NUnit.Framework;
using NMock2;

[TestFixture]
public class DataConversionTests {

    NMock2.Mockery mock;

    [SetUp]
    public void SetUp() {}

    [Test]
    public void CheckKey() {}
}

And here's how I build the test via 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

And here's the output I get:

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

I'm obviously getting something simple wrong, but I just can't see what it is. What do I need to change to make this work?

È stato utile?

Soluzione

If I copy the NMock2.dll into the local directory and do not use the path to it, then nunit seems to find it OK, and the tests pass.

This was prompted by noticing that moving the member variable from the class into the method changed the nunit message to something about being unable to open or load the specified file.

I'd like to avoid having to copy this dll around, so if anyone has a better solution I'll accept that.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top