#StackBounty: #jenkins #testing #groovy #nunit #invoke Exception has been thrown by the target of an invocation, in jenkins' groovy…

Bounty: 50

I need to maintain a jenkins groovy script (we are not sure however if it ever worked).The script for a pipeline build has multiple stages (‘revision’ and ‘build’ stages before ‘unit tests’ have succeeded), one of which is the following:

enter image description here

stage('Unit Tests')
        {
            stages
            {
                stage('Tests')
                {
                    parallel
                    {
                        stage('TRKengineTest')
                        {
                            steps 
                            {
                                bat '"C:\Program Files (x86)\NUnit.org\nunit-console\nunit3-console.exe" TRKengine\TRKengine.Test\bin\Release\netcoreapp3.1\TRKengine.Test.dll --result=TRKengine.Test.xml;format=nunit2 --timeout=180000  --workers=1'
                                echo "Something to do?"
                            }
                        }
                        stage('TRKengineGUItest')
                        {
                            steps 
                            {
                                //bat '"C:\Program Files (x86)\NUnit.org\nunit-console\nunit3-console.exe" TRKengine\TRKengineGUI.Test\bin\Release\netcoreapp3.1\TRKengineGUI.Test.dll --result=TRKengineGUI.Test.xml;format=nunit2 --timeout=180000 -v --workers=1'
                                echo "Nothing to do"
                            }
                        }
                    }
                }
                stage('Testresults')
                {
                    steps
                    {
                        nunit testResultsPattern: 'TRKengine.Test.xml, TRKengineGUI.Test.xml'
                    }
                }
            }
        }

The bat command returns a -100 error. More precisely:

C:JenkinsworkspaceTRKengine_trunk>"C:Program Files (x86)NUnit.orgnunit-consolenunit3-console.exe" TRKengineTRKengine.TestbinReleasenetcoreapp3.1TRKengine.Test.dll --result=TRKengine.Test.xml;format=nunit2 --timeout=180000 -v  --workers=1 

NUnit Console Runner 3.6.1 

Copyright (C) 2017 Charlie Poole



Runtime Environment

   OS Version: Microsoft Windows NT 10.0.14393.0

  CLR Version: 4.0.30319.42000



Test Files

    TRKengineTRKengine.TestbinReleasenetcoreapp3.1TRKengine.Test.dll





Errors, Failures and Warnings



1) Error : 

Exception has been thrown by the target of an invocation.



Server stack trace: 

   at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)

   at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)

   at System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, StackCrawlMark& stackMark)

   at System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)

   at System.Activator.CreateInstance(String assemblyString, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, Evidence securityInfo, StackCrawlMark& stackMark)

   at System.Activator.CreateInstance(String assemblyName, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, Evidence securityInfo)

   at System.AppDomain.CreateInstance(String assemblyName, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, Evidence securityAttributes)

   at System.AppDomain.CreateInstanceAndUnwrap(String assemblyName, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, Evidence securityAttributes)

   at System.AppDomain.CreateInstanceAndUnwrap(String assemblyName, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, Evidence securityAttributes)

   at NUnit.Engine.Drivers.NUnit3FrameworkDriver.Load(String testAssemblyPath, IDictionary`2 settings)

   at NUnit.Engine.Runners.DirectTestRunner.LoadPackage()

   at NUnit.Engine.Runners.DirectTestRunner.EnsurePackageIsLoaded()

   at NUnit.Engine.Runners.DirectTestRunner.RunTests(ITestEventListener listener, TestFilter filter)

   at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Object[]& outArgs)

   at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg)



Exception rethrown at [0]: 

   at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)

   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)

   at NUnit.Engine.ITestEngineRunner.Run(ITestEventListener listener, TestFilter filter)

   at NUnit.Engine.Runners.ProcessRunner.RunTests(ITestEventListener listener, TestFilter filter)



Test Run Summary

  Overall result: Failed

  Test Count: 0, Passed: 0, Failed: 0, Warnings: 0, Inconclusive: 0, Skipped: 0

  Start time: 2020-07-15 11:32:42Z

    End time: 2020-07-15 11:32:43Z

    Duration: 0.556 seconds



Results (nunit2) saved as TRKengine.Test.xml

script returned exit code -100

I have tried a couple of things:

1)First of all, it seems like the path of nunit-console.exe is wrong but as I found out, it can be used in recent releases of nunit.

2)The path of the test.dll is correct, as I manually navigated there and ..netcoreapp3.1TRKengine.Test.dll is indeed there.

3)I have spotted –result=TRKengine.Test.xml;format=nunit2 in other exampels across the internet.

4)I experimented with removing any combinations of the remaining parameters, workers/timeout -v etc, without success.

So the line where the error appears, seems to be correct, and my intuition is that probably the mistake has already happened somewhere else.

I am not sure what "invocation" means. I have also checked How do you run NUnit tests from Jenkins? that seems related and it feels like Winston33 ‘s proposition is exactly like what is happening here.

Something that is a bit worrying is that my machine is 64 bits but the path is ..x86.

I also have access to code and all projects inside the solution build successfully

I am a total beginner in both jenkins and groovy, so if I had not disclosed any necessary information please notify me.

Any help would be greatly appreciated.


Get this bounty!!!

#StackBounty: #c# #.net-core #nunit #app-config #nunit-3.0 Using an app.config file with NUnit3 in a .NET Core console app

Bounty: 300

The Environment:

I’ve got three projects in my solution currently:

  • A .NET Standard 2.0 library with some code I’d like to test.
  • A .NET Core 2.2 console app that references the library to make sure it works.
  • A .NET Core 2.2 console app created by using the “NUnit Test Project” template in VS.

The dependencies in my test project all are all from NuGet:

  • Moq Version=”4.10.1″
  • nunit” Version=”3.11.0″
  • NUnit.ConsoleRunner” Version=”3.10.0″
  • NUnit3TestAdapter” Version=”3.13.0″
  • Microsoft.NET.Test.Sdk” Version=”16.0.1″

The Problem:

The .NET standard library relies on an app.config file being present in any application that uses it. It uses ConfigurationSection and ConfigurationElement attributes to map the values to a class, very similar to this answer: A custom config section with nested collections

The .NET Core console app has an app.config file in it, and the library is able to parse values out of it just fine and use them. Yay.

The NUnit console app, on the other hand, has the same app.config file in it, but the library can’t seem to see it. As soon as it tries to read a value using ConfigurationManager.GetSection("...") it returns null.

Has anyone gotten an app.config file to work with NUnit3 in an environment like this?


What I’ve Tried:

It seems like it supports config files, but I’m not sure if the docs are referring to some special NUnit config file or an app.config file.

  • I tried renaming app.config to my_test_project_name.dll.config
  • I set the config file “Copy to output directory” setting to “Copy always”
  • I tried every similar name I could think of (app.config, App.config, my_test_project_name.config, my_test_project_name.dll.config, etc)

I also tried a few things inside the one test I’ve written so far, to attempt to set the config file somehow, such as a suggestion to use AppDomain.CurrentDomain.SetData() (didn’t work, possibly because NUnit3 doesn’t support AppDomain):

AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", @"C:PathToMyTestsmy_test_project_name.dll.config");

Although there are tests in the NUnit repo that seem to suggest using a configuration file in NUnit3 is possible, that particular test file is only referenced in the .NET 4.5 demo project, not the .NET Core demo project.


Get this bounty!!!