Методы C #, не печатающие правильные значения - PullRequest
0 голосов
/ 13 июня 2011

У меня есть два метода General и SearchTab ниже.Когда я смотрю на свой файл отчета, я вижу, что значения общих методов таковы:

TestName:

TestMachine: Maya

TestUser: Administrator

TestTime: 13.06.2011 12: 02

TestStatus: FAIL

TestExpectedResult:

TestActualResult:

TestComments:

TestName, TestExpectedResult, TestActualResult и TestComments не заполнены, в то время как они должны иметь значения:

TestName: Test 1: General,

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);
    }


}
}

Ответы [ 2 ]

1 голос
/ 14 июня 2011

Ваша инициализация создает начальные значения массива и никогда не изменяет их.Вы изменяете значения полей:

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;

Конечно, это может быть изменено, чтобы быть намного лучше.

1 голос
/ 13 июня 2011

Не присваивайте значения в конструкторе или в общем методе.Согласно вашему коду, General, похоже, является контрольным примером.Если это тестовый пример, то не ожидайте, что General должен вызываться первым, потому что вы определили это как первый метод.

Используйте SetupTest () для установки значения.Обратите внимание, что SetupTest () не является тестовым набором, но он будет вызываться перед выполнением каждого тестового примера.

Не печатать, поднять предупреждение ..

[SetUp]
public void SetupTest()
{
  ...your initialization code...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...