Bonjour,

Je poste juste cette info que je n'ai trouvée nulle part, ca pourrait peut etre servir à quelqu'un...

Prenez ce code:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
using System;
using NUnit.Framework;
 
// genere MonoTests.dll
namespace MonoTests
{
    [TestFixture]
    public class MonoTestSuite
    {
        [Test]
        public void MonoTest1() { }
    }
}
Puis ce programme qui lance le test:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
using System;
using NUnit.Framework;
using NUnit.ConsoleRunner;
 
namespace MonoTestsLauncher
{
    class Program
    {
        static int Main(string[] args)
        {
            string[] NUnitArgs = new string[] { "-run=MonoTests.MonoTestSuite.MonoTest1", "/foo/bar/MonoTests.dll" };
 
            return NUnit.ConsoleRunner.Runner.Main(NUnitArgs);
        }
    }
}
Et bien sous mono 2.2 (machine virtuelle openSUSE téléchargée sur le site officiel de mono) vous obtiendrez cette jolie erreur:

NUnit version 2.5.0.8332 (Beta-1)
Copyright (C) 2002-2008 Charlie Poole.\r\nCopyright (C) 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov.\r\nCopyright (C) 2000-2002 Philip Craig.\r\nAll Rights Reserved.

Runtime Environment -
OS Version: Unix 2.6.25.18
CLR Version: 2.0.50727.1433 ( Mono 2.2 )

Selected test: MonoTests.MonoTestSuite.MonoTest1
Unhandled Exception:
System.NullReferenceException: Object reference not set to an instance of an object

Server stack trace:
at NUnit.Core.SimpleTestRunner.CountTestCases (ITestFilter filter) [0x00000]
at NUnit.Core.ProxyTestRunner.CountTestCases (ITestFilter filter) [0x00000]
at NUnit.Core.ProxyTestRunner.CountTestCases (ITestFilter filter) [0x00000]
at (wrapper managed-to-native) System.Runtime.Remoting.RemotingServices:InternalExecute (System.Reflection.MethodBase,object,object[],object[]&)
at System.Runtime.Remoting.RemotingServices.InternalExecuteMessage (System.MarshalByRefObject target, IMethodCallMessage reqMsg) [0x00000]

Exception rethrown at [0]:

at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke (System.Runtime.Remoting.Proxies.RealProxy rp, IMessage msg, System.Exception& exc, System.Object[]& out_args) [0x00000]
(je précise que j utilise les dernieres version des dll NUnit, et non pas celles ditribuées avec mono, d ou la version de NUnit 2.5.0.8332 (Beta-1))

Le truc bien pénible alors que sous Windaube ca marche tres bien...

Et bien la solution c'est de lancer le test comme ceci (une option de console supplémentaire):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
 
string[] NUnitArgs = new string[] { "-fixture=MonoTests.MonoTestSuite", "-run=MonoTests.MonoTestSuite.MonoTest1", "/foo/bar/MonoTests.dll" };
 
return NUnit.ConsoleRunner.Runner.Main(NUnitArgs);
Specifier le non du "fixture" est donc necessaire, sans ca il est incapable de trouver le test dans le dll fourni, certains préconisent meme de jouer avec l'option -domain (dans ce cas precis specifier -domain=Single) mais chez moi cela ne change rien.