我试图在我的C#ASP.NET项目上进行单元测试,但需要为所有测试运行一些初始化代码:
[TestClass()]
public class Init
{
[AssemblyInitialize]
public static void initialize()
{
ContextProvider.setContext(new TestContext());
}
}
在测试之前我需要运行它,但它没有运行。我试图调试我的所有测试并在该行中设置一个断点,但它没有被击中。如果我注释掉[AssemblyInitialize]
并运行一个不需要初始化的特定测试,它就会成功运行。但是,使用此行,不会运行任何测试(并且根本没有断点)
我在这里缺少什么?
答案 0 :(得分:6)
Phil1970的有用评论有助于解决问题。
initialize方法的问题是它必须接收TestContext(<ListBox Margin="10" ItemsSource="{Binding Files1}" ContextMenu="{StaticResource contextMenu}" Tag="{x:Type local:FileTypeA}"/>
)。我找不到任何明确说明这一点的指南/ Microsoft文档,但this msdn page中的示例确实有TestContext作为方法的输入。
添加后,测试成功运行。在旁注中,我创建了一个类来模拟我需要的一些数据并将其称为TestContext,结果证明这是一个非常糟糕的名称选择,使得理解我的错误变得更加困难。我将它重命名为APITestContext,这是我的固定初始化类。
private static bool NewFile_CanExecute( ListBox listbox ) { return true; }
private static void NewFile_Executed( ListBox listbox )
{
var filetype = listbox.Tag as Type;
System.Diagnostics.Debug.WriteLine( string.Format( "Creating new file of type {0}", filetype ) );
// if( filetype == typeof( FileTypeA ) ) CreateNewFileTypeA();
// else if( filetype == typeof( FileTypeB ) ) CreateNewFileTypeB();
// etc...
}
答案 1 :(得分:2)
(我认为)这是要检查的所有事情的完整列表:
答案 2 :(得分:0)
不知道它是否可以相关,但in the documentation它说
不应在ASP.NET单元测试中使用此属性,即使用[HostType(&#34; ASP.NET&#34;)]属性进行的任何测试。由于IIS和ASP.NET的无状态特性,每次测试运行时可能会多次调用使用此属性修饰的方法。
您使用的是HostType吗?