gpt4 book ai didi

junit - 发布selenium代码维护

转载 作者:行者123 更新时间:2023-12-02 00:41:22 24 4
gpt4 key购买 nike

我想把常用的方法集中在一个文件中使用。例如,使用 selenium 登录页面可能会被多次使用。在类A中定义,在类B中调用,但抛出空指针异常。

A类有

public void test_Login() throws Exception
{
try{
selenium.setTimeout("60000");
selenium.open("http://localhost");
selenium.windowFocus();
selenium.windowMaximize();
selenium.windowFocus();
selenium.type("userName", "admin");
selenium.type("password", "admin");
Result=selenium.isElementPresent("//input[@type='image']");
selenium.click("//input[@type='image']");
selenium.waitForPageToLoad(Timeout);
}
catch(Exception ex)
{
System.out.println(ex);
ex.printStackTrace();
}
}

所有其他 java 语法

B级

public void test_kk() throws Exception
{

try
{
a.test_Login();
}
catch(Exception ex)
{
System.out.println(ex);
ex.printStackTrace();
}
}

所有语法。

当我执行类B时,我得到了这个错误,

java.lang.NullPointerException
at A.test_Login(A.java:32)
at B.test_kk(savefile.java:58)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at junit.framework.TestCase.runTest(TestCase.java:168)
at junit.framework.TestCase.runBare(TestCase.java:134)
at com.thoughtworks.selenium.SeleneseTestCase.runBare(SeleneseTestCase.j
ava:212)
at junit.framework.TestResult$1.protect(TestResult.java:110)
at junit.framework.TestResult.runProtected(TestResult.java:128)
at junit.framework.TestResult.run(TestResult.java:113)
at junit.framework.TestCase.run(TestCase.java:124)
at junit.framework.TestSuite.runTest(TestSuite.java:232)
at junit.framework.TestSuite.run(TestSuite.java:227)
at junit.textui.TestRunner.doRun(TestRunner.java:116)
at junit.textui.TestRunner.doRun(TestRunner.java:109)
at junit.textui.TestRunner.run(TestRunner.java:77)
at B.main(B.java:77)

我希望之前一定有人试过这个。我可能会在这里错过一些东西。

最佳答案

我们这样做的方式是,我们有带有静态方法的辅助类。在实际测试用例中,我们设置了 selenium 对象并将该对象传递给静态方法,以便它可以对其进行操作。

public BaseHelper
{
public static login( final String username, final String password, final DefaultSelenium selenium )
{
selenium.type("userName", username);
selenium.type("password", password);
selenium.click("loginbutton");
}
}


public LoginTest
{
DefaultSelenium selenium;

onSetup()
{
selenium = new DefaultSelenium(...);
}

public testLogin()
{
BaseHelper.login( "admin", "admin", selenium);
// assert that this passed
BaseHelper.login( "foo", "bar", selenium);
// assert this failed because no user 'foo'
BaseHelper.login( "admin", "bar", selenium);
// assert this failed because admin's password was incorrect
}
}

希望这说明了这一点。

除了更好的可读性和更容易维护之外,您还可以通过创建两个(或更多)selenium 对象并在测试中传递它们来测试多用户行为。

关于junit - 发布selenium代码维护,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2453006/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com