通过调用公共方法将IApp应用程序变量传递给私有方法

杰克G123

给定以下代码在名为Tests.cs的文件中:

public class Tests
{
    IApp app;
    Platform platform;

    public Tests(Platform platform)
    {
        this.platform = platform;
    }

    [SetUp]
    public void BeforeEachTest()
    {
        app = AppInitializer.StartApp(platform);
    }

    [Test]
    public void AttemptInvalidLogin()
    {
        LandingPage landingPageObjects = new LandingPage();
        landingPageObjects.Login(app, "test123", "test123");
    }
}

以下代码位于名为LandingPage.cs的文件中:

public class LandingPage
{
    public void Login(IApp app, String Email, String Password)
    {
        LandingPageDisplayed(app);
        EnterEmailAddress(app, Email);
        EnterPassword(app, Password);
    }

    private void LandingPageDisplayed(IApp app)
    {
        app.WaitForElement(c => c.Marked("txtLogin").Text("Login"));
    }

    private void EnterEmailAddress(IApp app, String emailAddress)
    {
        app.EnterText(c => c.Marked("editvalidid"), emailAddress);
    }

    private void EnterPassword(IApp app, String password)
    {
        app.EnterText(c => c.Marked("editvalidpassword"), password);
    }

    private void TapLoginButton(IApp app)
    {
        app.Tap(c => c.Marked("btnlogin"));
    }
}

我想学习一种更有效的方法,将变量“ app”传递给LandingPage.cs内的私有方法。我尝试在LandingPage类中设置IApp应用程序,但是当我的代码在Xamarin.UITests中执行时,该应用程序将以未定义状态返回,并且未输入数据。我还尝试将Tests类中的IApp应用设置为公开,但这也不起作用。

所需的代码将类似于以下内容:

public class LandingPage
{
    IApp app = Tests.app;
    public void Login(String Email, String Password)
    {
        LandingPageDisplayed();
        EnterEmailAddress(Email);
        EnterPassword(Password);
    }

    private void LandingPageDisplayed()
    {
        app.WaitForElement(c => c.Marked("txtLogin").Text("Login"));
    }

    private void EnterEmailAddress(String emailAddress)
    {
        app.EnterText(c => c.Marked("editvalidid"), emailAddress);
    }

    private void EnterPassword(String password)
    {
        app.EnterText(c => c.Marked("editvalidpassword"), password);
    }

    private void TapLoginButton()
    {
        app.Tap(c => c.Marked("btnlogin"));
    }
}
基思·尼古拉斯

您需要将应用程序注入构造函数中

IApp _app;
public LandingPage(IApp app) 
{
   _app = app;
}

然后是方法

private void LandingPageDisplayed()
{
   _app.WaitForElement(c => c.Marked("txtLogin").Text("Login"));
}

然后在您的测试中

var  landingpage = new LandingPage(app);

另外,如果您的测试课程确实是,LandingPageTests那么您可能想要

public class LandingPageTests
{
    IApp app;
    Platform platform;
    LandingPage _landingPage;

    public Tests(Platform platform)
    {
        this.platform = platform;
    }

    [SetUp]
    public void BeforeEachTest()
    {
        app = AppInitializer.StartApp(platform);
        _landingPage = new LandingPage(app);
    }

    [Test]
    public void AttemptInvalidLogin()
    {
        _landingPage.Login(app, "test123", "test123");
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

继承私有方法和公共

通过JMockit调用私有方法以测试结果

私有方法优于公共方法

通过返回语句java调用私有方法

有什么方法可以将@Autowired变量传递给Spring Boot应用程序中的其他类?

当我将变量传递给golang中的私有方法时,它会创建一个新实例吗?

将公共方法转换为私有方法

当非常量方法是私有方法时,为什么不调用公共常量方法?

公共方法使用相同的名称调用私有方法-这种模式是什么?

通过私有方法返回更新后的变量

使用CoffeeScript在“私有方法”中获取“公共变量”

Java应用程序的性能是否取决于将变量传递给方法?

无法使用反射包将变量传递给私有方法

反射-将连接字段传递给私有方法

将变量分配给私有方法

将值输入从主方法传递给私有变量

如何在单元测试时使用jmockit将空字符串传递给私有方法?

如何通过JavaFX应用程序将变量传递给控制器?

应用程序控制器导轨中的私有方法

调用私有方法

如何访问在公共方法中声明的变量以便在私有方法中使用它

Python 公共和私有方法

C++ 应用程序:将值从窗体传递到主窗口私有变量

将公共变量传递给方法和将参数变量传递给方法有什么区别

如何将 iOS 私有应用程序切换为公共应用程序

继承方法调用私有方法

将实体传递给私有方法以从请求 DTO 进行更新

从同一类中的公共方法调用私有方法

Java:从私有方法调用公共事务方法