奇怪的测试方法失败 - Windows安全

时间:2013-05-21 14:05:44

标签: c# security unit-testing

我可能会失明,但这让我很难过。使用System.UnauthorizedAccessException在我的本地计算机(但不在我们的构建服务器上)上进行以下单元测试失败。

    [TestMethod()]
    public void UserPreferences_LocalApplicationDataPath_PathAlwaysExists()
    {

        //setup: get the proposed path and then delete the bottom folder and any existing files
        string logPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
        string actual = System.IO.Path.Combine(logPath, @"Autoscribe\Matrix\Gemini");

        //if the folder is there, first delete it
        if (Directory.Exists(actual))
        {
            //log some information about what is going on

            Console.WriteLine("Attempting to delete " + actual + " as user " + Environment.UserName);
            Directory.Delete(actual, true); // <-THROWS EXCEPTION HERE
            Console.WriteLine("Deleted");
        }

        //action
        actual = UserPreferencesManager.LocalApplicationDataPath;

        //assert that getting the path forces it to be created.
        Assert.IsTrue(Directory.Exists(actual));
    }

报告的Environment.UserName值是“拥有”本地AppData文件夹的Windows用户。为什么不能删除文件夹?奇怪的是,我在运行测试的所有机器上都没有这个问题(所有Windows 7)。

1 个答案:

答案 0 :(得分:0)

您可能无法在本地删除该文件夹,因为您仍然有其他应用程序在其中运行该访问文件。也许您已经打开记事本来检查此文件夹中的日志文件?

构建服务器没有这些问题,因为没有用户或进程在计算机上实际“正常工作”。