Nunit-C #: perform specific tests using coding

I am using Selenium with C # for automation, and I want to call NUnit through code as follows:

CoreExtensions.Host.InitializeService(); TestPackage testPackage = new TestPackage(@"D:\Automation\bin\Debug\Test.dll"); RemoteTestRunner remoteTestRunner = new RemoteTestRunner(); remoteTestRunner.Load(testPackage); //TestFilter filter = new NameFilter(new TestName() { Name = "Test1" }); TestResult testResult = remoteTestRunner.Run( new NullListener(), TestFilter.Empty, false, LoggingThreshold.Off ); 

I can run tests using the category filter as shown below

 remoteTestRunner.Run( new NullListener(), new CategoryFilter("MyCat"), false, LoggingThreshold.Off ); 

But I want to perform specific tests. How to set dialing filter? I tried the following, but it does not work:

 TestFilter filter = new NameFilter(new TestName() { Name = "Test1" }); TestResult testResult = remoteTestRunner.Run( new NullListener(), filter, false, LoggingThreshold.Off ); 

How to run certain tests and how to pass arguments using code?

+4
source share
2 answers

This code example should give you an idea of ​​what you need to do in order to start the loop through your tests and choose which one you want to run. I used several indexes of array 0, where you should iterate over them.

The bottom line is that you must actually download the tests before you can start to run them individually, since the tests must have a unique TestId, which is installed only after they are downloaded. The following code works and runs the first test in the first test environment in your test environment. It also scans all test names for you to display or run based on some criteria.

 CoreExtensions.Host.InitializeService(); TestSuiteBuilder builder = new TestSuiteBuilder(); TestPackage testPackage = new TestPackage(@"path.to.dll"); RemoteTestRunner remoteTestRunner = new RemoteTestRunner(); remoteTestRunner.Load(testPackage); TestSuite suite = builder.Build(testPackage); TestSuite test = suite.Tests[0] as TestSuite; var numberOfTests = ((TestFixture)test.Tests[0]).TestCount; foreach (TestMethod t in ((TestFixture)test.Tests[0]).Tests) { Console.WriteLine(t.TestName.Name); } TestName testName = ((TestMethod)((TestFixture)test.Tests[0]).Tests[0]).TestName; TestFilter filter = new NameFilter(testName); TestResult result = test.Run(new NullListener(), filter); ResultSummarizer summ = new ResultSummarizer(result); Assert.AreEqual(1, summ.ResultCount); 
+6
source

Here is my working code ....

  SimpleNameFilter filter = new SimpleNameFilter() foreach (DataRow DR in DT.Rows) { string Test = "FullNameOftheTest"; filter.Add(Test); } CoreExtensions.Host.InitializeService(); TestPackage testPackage = new TestPackage(@"D:\Test\Test.dll"); RemoteTestRunner remoteTestRunner = new RemoteTestRunner(); remoteTestRunner.Load(testPackage); TestResult result = remoteTestRunner.Run(new NullListener(), filter, true, LoggingThreshold.All); ResultSummarizer summaryResults = new ResultSummarizer(result); 

Thank you all for your support, Kishor.

0
source

All Articles