在所有testing运行之前是否可以执行一次代码?
基本上我想告诉MSTest在启动一系列testing运行之前执行一些代码,本质上我想要做的和在Main()
粘贴一些代码是一样的。
我想这样做的原因是我想在我的集成testing运行期间用log4net做一些日志logging。 我不能只使用log4net.Config.XmlConfigurator
程序集属性,因为在我的testing程序LoggerManager
它已经调用了LoggerManager
。 文档build议在代码入口处显式configurationlog4net – 但是在我的testing中,这是什么?
我需要能够运行在TestDriven.NET和MSTest亚军我的testing。
FWIW,您可以在程序集中的所有unit testing执行之前使用AssemblyInitialize属性来运行代码:
[TestClass] public class SetupAssemblyInitializer { [AssemblyInitialize] public static void AssemblyInit(TestContext context) { // Initalization code goes here } }
如果你有多个unit testing组件,我不知道包含多个组件的任何东西。
据我所知,这是尽可能接近你的主要等值。
请注意, AssemblyInitialize
-decorated方法必须位于TestClass
-decorated类中,该类至less包含一个TestMethod
-decorated方法,否则将不会执行!
为了完成,这些是MSTest之前的“运行代码”选项:
- 在程序集中的任何testing运行之前,使用
[AssemblyInitialize]
为每个程序集运行一次代码。 - 在定义方法的类的任何testing之前,使用
[ClassInitialize]
每个类运行一次代码。 - 使用
[TestInitialize]
在定义方法的类中的每个testing之前运行代码。
我在MS Test头部看到这个。
// Use ClassInitialize to run code before running the first test in the class //[ClassInitialize()] //public static void MyClassInitialize(TestContext testContext) { }
这将在一个class的testing之前运行。
听起来你想在所有的testing之前运行一些东西。
testing运行configuration中还有安装脚本选项。