I have a small hosting class that works on a WinForms app. But it gives an InvalidProgramException when called from a NUnit test.<br><br>The test project is within the IronPython solution and I&#39;ve referenced IronPython, IronPython.Modules and Microsoft.Scripting.<br>
<br>I&#39;d like to know if other people were able to test hosting using NUnit.<br><br>Thanks.<br><br>**********<br>&nbsp;This is the error report:<br>**********<br>
<br>------ Test started: Assembly: HostingTest.dll ------<br><br>TestCase &#39;HostingTest.Class1.TestHosting&#39;<br>failed: Microsoft.Scripting.InvalidImplementationException : Type &#39;IronPython.Runtime.PythonContext&#39; doesn&#39;t provide a suitable public constructor or its implementation is faulty.<br>
&nbsp; ----&gt; System.TypeInitializationException : O inicializador de tipo de &#39;IronPython.Runtime.Importer&#39; acionou uma exceção.<br>&nbsp; ----&gt; System.InvalidProgramException : Common Language Runtime detectou um programa inválido.<br>
&nbsp;&nbsp;&nbsp; C:\Temp\IronPython v2.0 Alpha 8\IronPython-2.0A8-Src\IronPython-2.0A8\Src\Microsoft.Scripting\Utils\ReflectionUtils.cs(129,0): em Microsoft.Scripting.Utils.ReflectionUtils.CreateInstance[T](Type actualType, Object[] args)<br>
&nbsp;&nbsp;&nbsp; C:\Temp\IronPython v2.0 Alpha 8\IronPython-2.0A8-Src\IronPython-2.0A8\Src\Microsoft.Scripting\ScriptDomainManager.cs(276,0): em Microsoft.Scripting.ScriptDomainManager.LanguageRegistration.LoadLanguageContext(ScriptDomainManager manager)<br>
&nbsp;&nbsp;&nbsp; C:\Temp\IronPython v2.0 Alpha 8\IronPython-2.0A8-Src\IronPython-2.0A8\Src\Microsoft.Scripting\ScriptDomainManager.cs(387,0): em Microsoft.Scripting.ScriptDomainManager.TryGetLanguageContext(String languageId, LanguageContext&amp; languageContext)<br>
&nbsp;&nbsp;&nbsp; C:\Temp\IronPython v2.0 Alpha 8\IronPython-2.0A8-Src\IronPython-2.0A8\Src\Microsoft.Scripting\ScriptDomainManager.cs(437,0): em Microsoft.Scripting.ScriptDomainManager.GetEngine(String languageId)<br>&nbsp;&nbsp;&nbsp; C:\Temp\IronPython v2.0 Alpha 8\IronPython-2.0A8-Src\IronPython-2.0A8\Src\Microsoft.Scripting\Hosting\ScriptEnvironment.cs(156,0): em Microsoft.Scripting.Hosting.ScriptEnvironment.GetEngine(String languageId)<br>
&nbsp;&nbsp;&nbsp; C:\Temp\IronPython v2.0 Alpha 8\IronPython-2.0A8-Src\IronPython-2.0A8\Src\HostingTest\Host.cs(11,0): em HostingTest.Host.Teste()<br>&nbsp;&nbsp;&nbsp; C:\Temp\IronPython v2.0 Alpha 8\IronPython-2.0A8-Src\IronPython-2.0A8\Src\HostingTest\Class1.cs(12,0): em HostingTest.Class1.TestHosting()<br>
&nbsp;&nbsp;&nbsp; --TypeInitializationException<br>&nbsp;&nbsp;&nbsp; em IronPython.Runtime.Importer..ctor(PythonContext context)<br>&nbsp;&nbsp;&nbsp; C:\Temp\IronPython v2.0 Alpha 8\IronPython-2.0A8-Src\IronPython-2.0A8\Src\IronPython\Runtime\PythonContext.cs(120,0): em IronPython.Runtime.PythonContext..ctor(ScriptDomainManager manager)<br>
&nbsp;&nbsp;&nbsp; --InvalidProgramException<br>&nbsp;&nbsp;&nbsp; em Microsoft.Scripting.RuntimeHelpers.CreateSimpleCallSite[T0,T1,T2,T3,T4,R]()<br>&nbsp;&nbsp;&nbsp; C:\Temp\IronPython v2.0 Alpha 8\IronPython-2.0A8-Src\IronPython-2.0A8\Src\IronPython\Runtime\Importer.cs(74,0): em IronPython.Runtime.Importer.MakeImportSite()<br>
&nbsp;&nbsp;&nbsp; C:\Temp\IronPython v2.0 Alpha 8\IronPython-2.0A8-Src\IronPython-2.0A8\Src\IronPython\Runtime\Importer.cs(49,0): em IronPython.Runtime.Importer..cctor()<br><br>0 passed, 1 failed, 0 skipped, took 2,11 seconds.<br><br>**********<br>
Class1.cs<br>**********<br>
using NUnit.Framework;<br><br>namespace HostingTest<br>{<br>&nbsp;&nbsp;&nbsp; [TestFixture]<br>&nbsp;&nbsp;&nbsp; public class Class1<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Test]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void TestHosting()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Host host = new Host();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string x = host.Test();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Assert.AreEqual(&quot;Hosting&quot;, x);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>}<br><br>**********<br>Host.cs<br>

**********<br>

using Microsoft.Scripting;<br>using Microsoft.Scripting.Hosting;<br><br>namespace HostingTest<br>{<br>&nbsp;&nbsp;&nbsp; public class Host<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public string Test()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IScriptEnvironment env = ScriptEnvironment.GetEnvironment();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IScriptEngine pe = env.GetEngine(&quot;py&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IScriptScope scope = env.CreateScope();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SourceUnit script = pe.CreateScriptSourceFromString(@&quot;<br>def Test():<br>&nbsp;&nbsp;&nbsp; return &#39;Hosting&#39;<br>
&quot;, SourceCodeKind.Statements);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CompiledCode codigo = (CompiledCode)pe.Compile(script);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; codigo.Execute(scope);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SourceUnit function = pe.CreateScriptSourceFromString(&quot;Test()&quot;);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CompiledCode funcao = (CompiledCode)pe.Compile(function);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return funcao.Evaluate(scope).ToString();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>}<br><br>