基本上,我想告诉MSTest在开始一系列测试运行之前执行一些代码,基本上我想做的就是在Main()中插入一些代码。
我想这样做的原因是,我想在集成测试运行期间使用log4net进行一些日志记录。我不能只使用log4net.Config.XmlConfigurator程序集属性,因为当它在我的测试程序集中读取它时,它已经调用了LoggerManager。文档建议在代码入口点显式配置log4net --但是在我的测试中它在哪里呢?
我需要能够在TestDriven.NET和MSTest runner中运行我的测试。
发布于 2010-03-05 04:47:12
FWIW,您可以使用AssemblyInitialize属性在程序集中的所有单元测试执行之前运行代码:
[TestClass]
public class SetupAssemblyInitializer
{
[AssemblyInitialize]
public static void AssemblyInit(TestContext context)
{
// Initalization code goes here
}
}如果您有多个单元测试程序集,我不知道任何包含多个程序集的东西。
据我所知,这是您能得到的最接近的主等价物。
请注意,AssemblyInitialize-decorated方法必须在一个包含至少一个TestMethod-decorated方法的TestClass-decorated类中,否则它将不会被执行!(AssemblyInitialize-decorated method 必须位于至少包含一个TestMethod-decorated方法的TestClass-decorated类中,否则它将无法执行!)
发布于 2016-01-28 22:52:38
为了完成,下面是MSTest的“在此之前运行代码”选项:
在运行程序集中任何测试之前,
[AssemblyInitialize]运行一次代码。在定义方法的类中的任何测试之前,[ClassInitialize]为每个类运行一次代码。[TestInitialize]在定义方法的类中的每个测试之前运行代码。H29 F210发布于 2010-03-05 04:46:44
我在MS Test头中看到了这一点。
// Use ClassInitialize to run code before running the first test in the class
//[ClassInitialize()]
//public static void MyClassInitialize(TestContext testContext) { }这将在一个类中的测试之前运行。
听起来你想在所有测试之前运行一些东西。
在测试运行配置中还有设置脚本选项。
https://stackoverflow.com/questions/2382552
复制相似问题