C#单元测试 - 使用runsettings文件进行有序测试

时间:2016-09-13 07:39:55

标签: c# unit-testing ordered-test testcontext runsettings

我正在尝试开发自动回归测试框架作为单元测试。因此,我使用有序测试来组合不同的测试步骤,并以易于使用的方式将它们组合在一起。出于配置目的,我想使用 runsettings 文件,尤其是TestRunParameters。这没有任何错误,但仅在执行每个测试时。如果我使用 orderedtest 执行测试,我用来访问TestRunParameters的 TestContext 对象不再包含它们。我在直接测试方法的同时对该对象进行了调试,同时也使用有序测试对其进行了测试。在第一个场景中,对象具有所需的属性,但是当按照orderedtest执行测试时,对象看起来完全不同。这两种执行方式之间是否存在主要差异?

不同的TestContext对象:

Execution as single test picture
Execution as ordered test picture

我得到的错误如下:

Ergebnis StackTrace:    at Regression.FileSystem.FileSystemTestInitializer(TestContext context) in \FileSystem.cs:line 18 
Ergebnis Meldung:   Class Initialization method Regression.FileSystemTestInitializer threw exception. System.NullReferenceException: System.NullReferenceException: Object reference not set to an instance of an object..

我执行以测试和加载设置的代码如下:

 namespace Regression
{
    [TestClass]
    public class FileSystem
    {
        private static Logger logger = LogManager.GetCurrentClassLogger();
        private static Dictionary<String, String> runSettings = new Dictionary<String, String>();

        [ClassInitialize]
        public static void FileSystemTestInitializer(TestContext context)
        {
            runSettings.Add("scenarioName", context.Properties["scenarioName"].ToString());
            runSettings.Add("testRootDir", context.Properties["testRootDir"].ToString());
        }

        [TestMethod]
        public void Action_FileSystem_CleanUp()
        {
            DirectoryInfo dir = new DirectoryInfo(runSettings["testRootDir"] + runSettings["scenarioName"] + @"\testdata\");
            foreach(FileInfo file in dir.GetFiles())
            {
                file.Delete();
            }
            foreach (DirectoryInfo childDir in dir.GetDirectories())
            {
                childDir.Delete(true);
            }

            DirectoryCopy(runSettings["testRootDir"] + runSettings["scenarioName"] + @"\testdata_backup\", runSettings["testRootDir"] + runSettings["scenarioName"] + @"\testdata\", true);
        }

错误出现在第11行,如下所示:

runSettings.Add("scenarioName", context.Properties["scenarioName"].ToString());

runsettings文件,包含在visual studio的测试执行中:

<RunSettings>
  <!-- Parameters used by tests at runtime -->
  <TestRunParameters>
    <Parameter name="scenarioName" value="FileSystem_SharePointOnline_Unidirectional"/>
    <Parameter name="testRootDir" value="C:\testfiles\"/>
  </TestRunParameters>
</RunSettings>

0 个答案:

没有答案