在所有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中还有安装脚本选项。