我正在尝试使用visual studio单元测试框架为静态Main方法编写单元测试,这也是我的应用程序的入口点。我的方法如下。
public static void Main()
{
StructureMapBootstrapper.Register();
SetupFilter<Applicant>();
}
这会调用一个通用的SetupFilter方法
private static void SetupFilter<T>() where T : IDataFilterBase, new()
{
var filterName = typeof(T).Name;
if ("StartReceiver".TryGetTrueOrFalseConfigValue(filterName))
{
ObjectFactory.Configure(x => x.For<IDataFilterBase>().Use<T>());
var filter = new T();
filter.StartReceiver();
LogHelper.LogInfo(string.Format("Started {0} Filter Service", filterName));
}
else
{
LogHelper.LogInfo(string.Format("{0} Filter Service NOT started. StartReceiver flag is set to false", filterName));
}
}
我想到的第一件事是使用MOQ并验证SetupFilter方法至少被调用一次,但编译器抱怨该方法是静态的。 有关如何为此方法编写测试的任何想法?如何使用VS-unit测试框架进行设置,以及Assert需要什么?
答案 0 :(得分:1)
在我看来,你必须对你的代码做一个小的重构:
public class MyClass
{
public static void Main()
{
(new MyClass()).run();
}
public void Run()
{
StructureMapBootstrapper.Register();
SetupFilter<Applicant>();
}
}
然后您可以测试常规方法而不是static