C#方法未打印正确的值

如何解决C#方法未打印正确的值

| 我下面有两种方法General和SearchTab。当查看报告文件时,我看到常规方法的值如下: 测试名称: TestMachine:Maya TestUser:管理员 测试时间:6/13/2011 12:02 TestStatus:失败 TestExpectedResult: TestActualResult: 测试评论: TestName,TestExpectedResult,TestActualResult和TestComments为空白,但它们应具有以下值: TestName:测试1:常规, TestExpectedResult:应该显示\'Home \'标签, 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,false,5,\"\",true,Microsoft.Office.Interop.Excel.XlPlatform.xlWindows,\"\\t\",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);
    }


}
}
    

解决方法

        初始化将创建初始数组值,并且永远不会更改它们。您正在更改字段值:
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; }}
您或者需要为更改数组的属性编写设置器,或者最好在报告中使用适当的字段/属性:
xlWorkSheet.Cells[iLastRow + 1,0] = TestName;
当然,这也可以重构为更好的方法。     ,        不要在构造函数或常规方法中分配值。根据您的代码,General似乎是一个测试用例。如果是测试用例,那么不要期望应该首先调用General,因为您将其定义为第一个方法。 使用SetupTest()设置值。请注意,SetupTest()不是测试用例,但是在执行每个测试用例之前都会调用它。 不打印,发出警报。
[SetUp]
public void SetupTest()
{
  ...your initialization code...
}
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?