C#方法没有打印正确的值

本文关键字:打印 方法 | 更新日期: 2023-09-27 17:58:58

下面有两个方法General和SearchTab。当我查看我的报告文件时,我看到General Methods的值为:

测试名称:

TestMachine:Maya

测试用户:管理员

测试时间:2011年6月13日12:02

测试状态:失败

TestExpectedResult:

测试实际结果:

测试注释:

TestName、TestExpectedResult、TestActualResult和TestComments为空,但它们应该具有值:

测试名称:测试1:通用,

TestExpectedResult:应该存在"主页"选项卡,

TestActualResult:主页选项卡已找到

TestComments:主页选项卡找到

此外,TestStatus应该是PASS而不是FAIL。

看起来,即使我在方法General中重新分配了这些变量的值,它们仍然在构造函数中打印分配给它们的值。

第二个方法SearchTab也存在同样的问题。

请帮我解决这个问题。

namespace Automation
{
[TestClass]
public class FunctionalTest
{
    public ISelenium Sel;
    public StringBuilder Err;
    public string Report = "C:'Report.XLS";
    public string[] arrTestResults = new string[8];
    public string TestName;
    public string TestMachine;
    public string TestUser;
    public string TestTime;
    public string TestStatus;
    public string TestExpectedResult;
    public string TestActualResult;
    public string TestComments;
    // Constructor
    public FunctionalTest()
    {
        TestName = arrTestResults[0];
        TestMachine = arrTestResults[1] = System.Environment.MachineName.ToString();
        TestUser = arrTestResults[2] = System.Environment.UserName.ToString();
        TestTime = arrTestResults[3] = System.DateTime.Now.ToString();
        TestStatus = arrTestResults[4] = "FAIL";
        TestExpectedResult = arrTestResults[5];
        TestActualResult = arrTestResults[6];
        TestComments = arrTestResults[7];
    }
    public void WriteReport(string[] arrResults)
    {
        int iLastRow, iCnt1;
        if (File.Exists(Report))
        {
            Excel.Application xlApp;
            Excel.Workbook xlWorkBook;
            Excel.Worksheet xlWorkSheet;
            Excel.Range range;
            Object misValue = System.Reflection.Missing.Value;
            xlApp = new Excel.Application();
            xlWorkBook = xlApp.Workbooks.Add(misValue);
            xlWorkBook = xlApp.Workbooks.Open(Report, 0, false, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "'t", false, false, 0, true, 1, 0);
            xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
            range = xlWorkSheet.UsedRange;
            iLastRow = range.Rows.Count;
            for (iCnt1 = 1; iCnt1 < 9; iCnt1++)
            {
                xlWorkSheet.Cells[iLastRow + 1, iCnt1] = arrResults[iCnt1 - 1];
            }
            xlWorkBook.Save();
            xlApp.Quit();
            releaseObject(xlWorkSheet);
            releaseObject(xlWorkBook);
            releaseObject(xlApp);
        }
        else
        {
            Console.WriteLine("Report File " + Report + " does not exist");
        }
    }
    [TestMethod]
    public void General()
    {
        TestName = "Test 1: General";
        TestExpectedResult = "'Home' tab should be present";
        if (Sel.IsElementPresent("TAB_Home")))
        {
                TestStatus = "PASS";
                TestActualResult = "Home tab found";
                TestComments = TestActualResult;
        }
            else
            {
                TestActualResult = "Home tab not found";
                TestComments = TestActualResult;
            }
            //Write to report
            WriteReport(arrTestResults);
        }
    }
    [TestMethod]
    public void SearchTab()
    {
        TestName = "Test 2: Search Tab";
        TestExpectedResult = "Search tab should be present";
        // Assigning TestStatus to FAIL because TestStatus is PASS right now from the previous test method
        TestStatus = "FAIL";
        if (Sel.IsElementPresent("TAB_Search"))
        {
            sActual = "Search Tab found";
            arrTestResults[7] = sActual;
            TestComments = TestActualResult;
            TestStatus = "PASS";
        }
        else
        {
            TestActualResult = "Search tab not found";
            TestComments = TestActualResult;
        }
        //Write to report
        WriteReport(arrTestResults);
    }

}
}

C#方法没有打印正确的值

初始化创建初始数组值,并且从不更改它们。您正在更改字段值:

string TestName = "test";
TestName = arrTestResults[0];
// At this point, changing TestName does not affect arrTestResults[0]

此外,您不应该使用公共字段。相反,您应该使用属性。

public string TestName { get; set; }  // auto-property

private string _testName = string.Empty;
public string TestName { get { return _testName; } set { _testName = value; }}

您要么需要为更改数组的属性编写一个setter,要么更好地在报告中使用适当的字段/属性:

xlWorkSheet.Cells[iLastRow + 1, 0] = TestName;

当然,这也可以重构得更好。

不要在构造函数或General方法中赋值。根据您的代码,General似乎是一个测试用例。如果它是测试用例,那么不要期望General应该首先被调用,因为您将其定义为第一个方法。

使用SetupTest()设置该值。请注意,SetupTest()不是一个测试用例,但它将在执行每个测试用例之前被调用。

不要打印,提高警惕。。

[SetUp]
public void SetupTest()
{
  ...your initialization code...
}