Как мне наследовать метод из другого файла класса? - PullRequest
0 голосов
/ 13 октября 2019

Хорошо, ребята, во-первых, я извиняюсь, я не слишком хорош с c #. В основном у меня есть 2 файла классов, давайте вызовем один TestBase, а другой TestScripts1. Внутри класса TestScripts1 он наследует инициализатор TestBase, поэтому все мои скрипты могут выполняться. Теперь в обратном порядке я хочу использовать один из моих методов с именем DragAssignDeviceAndDriver () в TestScripts1 и использовать его в TestBase. Кто-нибудь знает, как это сделать?

Вот мой код для инициализатора из класса TestBase:

[TestClass]
    public class TestBase
    {        
        [TestInitialize]
        public void BaseTestInit()
        {
            // create chrome driver
            //driver = new ChromeDriver();

            ChromeOptions opt = new ChromeOptions();
            opt.AddArgument("disable-infobars");
            opt.AddArguments("--start-maximized");
            opt.AddArguments("--disable-extensions");
            driver = new ChromeDriver(opt);

            LoginAndSelectAutomationFleet(driver);
            //GenerationTestData();
        }


      }

        public void LoginAndGenerateTestData(IWebDriver driver)
        {
            DragAssignDeviceAndDriver();
        }

Выше, как я наследую метод DragAssignDeviceAndDriver ();

А вот мой класс кода TestScripts1 - как вы видите, TestScripts1 уже наследует TestBase:

    [TestClass]
    public class TestScripts1: TestBase
    {

        [TestInitialize]
        public void Setup()
        {

           (_regRep.organizationOption, "Amazing Power", driver);

        }


        [TestMethod]
        [TestCategory("Cat1")]
        public void DragAssignDeviceAndDriver()
        {
         //Do stuff   

        }

1 Ответ

1 голос
/ 13 октября 2019

Вы не можете вызвать метод, определенный в производном классе, из базового класса. Базовый класс должен знать, как он должен называться. Он должен быть объявлен в базовом классе и переопределен в производном классе.

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

Таким образом, базовый класс может вызывать переопределенный метод.

Например:

[TestClass]
public abstract class TestBase
{       
    protected abstract void DragAssignDeviceAndDriver();

    [TestInitialize]
    public void BaseTestInit()
    {
        // create chrome driver
        //driver = new ChromeDriver();

        ChromeOptions opt = new ChromeOptions();
        opt.AddArgument("disable-infobars");
        opt.AddArguments("--start-maximized");
        opt.AddArguments("--disable-extensions");
        driver = new ChromeDriver(opt);

        LoginAndSelectAutomationFleet(driver);
        //GenerationTestData();
    }

    public void LoginAndGenerateTestData(IWebDriver driver)
    {
       DragAssignDeviceAndDriver();
    }

  }

[TestClass]
public class TestScripts1: TestBase
{

    [TestInitialize]
    public void Setup()
    {

       (_regRep.organizationOption, "Amazing Power", driver);  // <--- ??

    }


    [TestMethod]
    [TestCategory("Cat1")]
    protected override void DragAssignDeviceAndDriver()
    {
     //Do stuff   

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