unit- c#:通过编码运行特定的测试
本文关键字:测试 运行 编码 unit- | 更新日期: 2023-09-27 18:11:03
我正在使用c#自动化Selenium,我想通过代码调用NUnit,如下所示:
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
);
我能够使用下面的类别过滤器运行测试
remoteTestRunner.Run(
new NullListener(),
new CategoryFilter("MyCat"),
false,
LoggingThreshold.Off
);
但是我想执行特定的测试。如何设置套件过滤器?我尝试了以下方法,但它不起作用:
TestFilter filter = new NameFilter(new TestName() { Name = "Test1" });
TestResult testResult = remoteTestRunner.Run(
new NullListener(),
filter,
false,
LoggingThreshold.Off
);
如何运行特定的测试以及如何通过代码传递参数?
这个示例代码应该让您了解在开始循环测试并选择要运行的测试之前必须做些什么。我使用了几个数组索引为0的地方,您应该循环执行。
它的要点是,在开始尝试单独运行测试之前,您必须实际加载测试,因为测试需要具有唯一的testd,该testd仅在加载后才被设置。下面的代码工作并运行测试框架中的第一个测试fixture中的第一个测试。它还为您扫描所有的测试名称,以便根据某些标准显示或运行
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);
这是我的工作代码....
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);
感谢大家的支持基肖尔。