Я не могу вызвать метод из другого файла в основной файл проекта для запуска моего теста - PullRequest
1 голос
/ 28 февраля 2020

Я открыл ранее существующий файл Excel и сравнил первую строку моего файла Excel под именем столбцов с некоторыми тестовыми значениями, хранящимися в переменных, чтобы увидеть, совпадают они или нет. Что я сделал? Вот код: Ниже приведен код в Program.cs файле, который присутствует под именем папки ProgramTesting, который снова присутствует под именем папки AppObj. Heirarchy:

Test01--> AppObj --> ProgramTesting --> Program.cs (Test01 - это файл .csproj)
Test01 --> MainProjectFile.cs (это файл решения)

using Excel = Microsoft.Office.Interop.Excel;
using Xceed.Wpf.Toolkit;
using System;
using System.Collections.Generic;

namespace MainProjectFile.AppObj.ProgramTesting
{
    public class Program
    {
        bool control = true;
        public void exceldownload(List<string> lst)
        {
            string str;
            int rw = 0;
            int cl = 0;

            Excel.Application xlApp = new Excel.Application();
            xlApp.Visible = true;
            xlApp.DisplayAlerts = false;

            Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(@"C:\Users\TestData.xsls", 0, true, 5, "", "", true, Excel.XlPlatform.xlWindows, "", false, false, 0, true, false, false);
            xlApp.WindowState = Microsoft.Office.Interop.Excel.XlWindowState.xlMaximized;

            Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1];

            Excel.Range xlRange = xlWorksheet.UsedRange;
            rw = xlRange.Rows.Count;
            cl = xlRange.Columns.Count;

            for (int i = 1; i <= cl; i++)
            {
                str = Convert.ToString((xlRange.Cells[2, i] as Excel.Range).Value2);
                if (!lst[i - 1].Equals(str))
                {
                    MessageBox.Show($"Not match in column: {i}");
                    control = false;
                }
            }
            if (control)
            {
                MessageBox.Show($"All match");
            }
            xlWorkbook.Close(0);
            xlApp.Quit();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            List<string> lst1 = new List<string>() { "Abc", "10t", "88990" };
            exceldownload(lst1);
        }

    }

}

В MainProjectFile.cs для запуска выше контрольного примера Я написал код:

namespace Test01.AppObj
{
    [TestClass]
    public class MainProjectFile
    {
        [TestInitialize]
        //[Ignore]
        [Priority(1)]
        [TestMethod]
        public void Excel()
        {
            Program a = new Program();
            a.exceldownload();

        }
     }
}

Но проблема заключается в том, что при создании проекта отображается ошибка

Код серьезности Описание Файл проекта Состояние подавления строки Ошибка CS7036 Не указан аргумент, который соответствует обязательному формальному параметру 'lst' в Program.exceldownload (List) 'Test01 C: \ Users \ MainProjectFile.cs 585 Активно

Как я могу решить проблему?

1 Ответ

1 голос
/ 28 февраля 2020

Ваш код не работает, потому что вы не можете вызвать метод, который вы объявили с одним строковым параметром List, если вы не зададите ему этот параметр.

public void exceldownload(List<string> lst)

Я не уверен, что хорошо понимают весь ваш код, но вы можете исправить это двумя способами:

  1. Сначала вы можете передать параметр list в функцию exceldownload, например:

    public void Excel()
    {
        Program a = new Program();
        a.exceldownload(new List<string>()); //or you can add in the list that you want to contain
    }
    
  2. вы можете изменить определение функции exceldownload, чтобы также не принимать никаких параметров, используя необязательный параметр:

    public void exceldownload(List<string> lst = null)
    {
        if(lst == null) {
            //TODO: manage this null as it should be
        }
        string str;
        int rw = 0;
        int cl = 0;
    

Надеюсь, это поможет вам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...