0

我正在尝试为在 c# 中使用 Selenium Webdriver 的测试创建自定义结果文件。

我正在将结果写入 csv 文件,并在最后关闭它。

问题是如果测试失败并且没有完成,文件永远不会关闭,因此我没有得到结果。

我试过把 file.Close(); 在 Teardown 部分中,但这不起作用,因为“文件”在该上下文中不存在。我看不出有办法把它传进去。

我还尝试在 Setup 中设置新的 StreamWriter 文件——这很好,但最后没有帮助关闭它。

我已经在这里搜索过和一般的谷歌搜索。

这是一个有效的示例 - 当它全部通过时(都在一个地方 - 测试中的不同类)。

我希望能够移动文件。关闭();不管它是否通过,它都会运行到哪里。

    [TearDown]
    public void TeardownTest()
    {
        try
        {
            driver.Quit();
        }
        catch (Exception)
        {
            // Ignore errors if unable to close the browser
        }
        Assert.AreEqual("", verificationErrors.ToString());

     //   file.Close();
     // this is where it doesn't work if I put it here
    }

    [Test]
    public void TheTest()
    {           
        System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\results\test.csv", true);

        try
        {
            Assert.AreEqual("text", "text");
            file.WriteLine("{0},{1},{2}", "time", "test", "PASS");
        }
        catch (AssertionException e)
        {
            verificationErrors.Append(e.Message);
            file.WriteLine("{0},{1},{2}", "time", "test", "FAIL");
        }

        //do next step

        file.Close();
    }
4

1 回答 1

0

您没有处理该对象。尝试使用语句https://msdn.microsoft.com/en-GB/library/yh598w02.aspx

[Test]
    public void TheTest()
    {           
        using(System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\results\test.csv", true))
{

        try
        {
            Assert.AreEqual("text", "text");
            file.WriteLine("{0},{1},{2}", "time", "test", "PASS");
        }
        catch (AssertionException e)
        {
            verificationErrors.Append(e.Message);
            file.WriteLine("{0},{1},{2}", "time", "test", "FAIL");
        }

        //do next step

        }
    }
于 2016-08-23T13:41:29.550 回答