【发布时间】:2014-05-05 18:39:27
【问题描述】:
我阅读的有关 C# 入口点类的所有信息都涉及:
static int Main(string[] args)
因为这是特定于 EXE 程序的。
但我的程序是一个 C# 自动化测试框架(解决方案中的 .cs),设计有 Specflow 功能文件和步骤定义。
我现在添加了一个名为 Program.cs - Int Main 类的(入口点)类,但我注意到在运行我的自动化测试时不会调用这个入口点类。很可能是因为我的程序不是 EXE 程序而是测试框架。
如何找到非 exe 程序的 C# 入口点?
因为我想使用我每次运行测试时都会调用的类中的“报告”代码:
namespace Project.Core
{
public class Program
{
public static int Main(string[] args)
{
Adapter.DefaultSearchTimeout = 5000;
int error;
try
{
error = TestSuiteRunner.Run(typeof (Program), Environment.CommandLine);
}
catch (Exception e)
{
TestReport.Setup(ReportLevel.Debug, "myReport.rxlog", true);
Report.Screenshot();
throw new ApplicationException("Error Found", e);
}
return error;
}
}
}
【问题讨论】:
-
不熟悉 Specflow,但它是加载和运行您的代码的程序吗?如果是这样,您必须查看 Specflow 的文档以了解它如何决定加载哪些类、运行哪些方法以及以什么顺序。最有可能的是,它会实例化您的一个类并在其上调用非静态方法,因此更改放置静态 Main 方法的位置可能不会有任何效果。
-
尝试在 SpecFlow 上阅读 this tutorial。
标签: c# entry-point