我在自动化测试环境中担任实习生.我必须了解TestNG和TestNG的一些示例.Test Suite的含义是什么?有人可以给我一些示例编码吗?
我有一个包含3个方法的java类:
public class Test{
public void orange(){
}
public void apple(){
}
public void mango(){
}
}
Run Code Online (Sandbox Code Playgroud)
我想按顺序/顺序执行上面提到的3种方法,就像我在Selenium RC和TestNG上编写的那样.我怎样才能做到这一点?
我是testng的新手.我想从命令行运行它时看到Expected和Actual消息.当我从IDE运行它时,它可以工作:
java.lang.AssertionError:预期:3实际:2
当我从命令行运行它时使用:
java org.testng.TestNG -testclass SimpleTest
Run Code Online (Sandbox Code Playgroud)
我明白了:
命令行套件总测试运行:2,失败:2,跳过:0
(没有消息)当我将测试包装在try ... catch块中时,它看起来像:
try{
int x = 3;
Assert.assertEquals(2,x);
} catch (AssertionError ae){
System.out.println(ae.getMessage());
}
Run Code Online (Sandbox Code Playgroud)
然后我得到了我的信息.
expected:<3> but was:<2>
Run Code Online (Sandbox Code Playgroud)
这似乎不是编写测试代码的简洁方法.你会怎么做?
使用EasyMock设置void方法的期望时,是否可以将Object数组指定为方法的参数之一?
例如,如果我们有这样的事情:
Errors mockErrors = createMock(Errors.class);
...
mockErrors.rejectValue(Object[]{"5", "2"});
mockErrors.replay();
classUnderTest.someMethod();
Run Code Online (Sandbox Code Playgroud)
在ClassUnderTest中,someMethod调用rejectValue(Object [] {"5","2"});
然而,尽管期望被设置为正在调用的内容,但是easy mock会抱怨意外的方法调用.
> Unexpected method call rejectValue(["5", "2"]):
> rejectValue(["5", "2"]): expected: 1, actual: 0
Run Code Online (Sandbox Code Playgroud)
我认为这是因为在引擎盖下它依赖于Object []上的equals方法,并且由于两者不同,它返回false并且不满足条件.
有办法解决吗?因为我没有使用expect()设置期望我可以使用any()...有没有办法在void方法上做同样的事情?
我总是在TestNG XML配置文件中测试标签(在线测试名称="Bing-Search-Sample ...")中出现此错误,当eclipse尝试根据其DTD验证XML时.该文件工作正常,似乎没有问题:
元素类型"test"的内容必须匹配"(method-selectors?,parameter*,groups ?, packages?,classes?)".
XML文件:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="tests" allow-return-values="true"
verbose="10">
<test name="Bing-Search-Sample-Test">
<classes>
<class name="package.TestFactory" />
</classes>
<groups>
<run>
<include name="sample-tests" />
</run>
</groups>
<parameter name="testInterfaceXML" value="SearchInterface.xml"></parameter>
<parameter name="testSuiteXML" value="SearchTest.xml"></parameter>
</test>
</suite>
Run Code Online (Sandbox Code Playgroud)
由于XML工作正常,我想知道TestNG DTD或使用eclipse的XML文件验证是否存在问题.
我的pom中没有surefire插件.但是当我使用命令运行时,我得到了确保插件错误:
mvn test -Dtest=TEstClass
Run Code Online (Sandbox Code Playgroud)
错误:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.10:test (default-
test) on project my-projection: No tests were executed! (Set -DfailIfNoTests=false to ignore
this error.) -> [Help 1]
Run Code Online (Sandbox Code Playgroud)
它来自哪里?
在我的测试中,我的代码如下所示:
val myVar = getVar() match {
case Some(v) => v
case None => fail() // TestNG
}
// more testing on myVar
...
// TestNG
public static void fail() { ... }
Run Code Online (Sandbox Code Playgroud)
问题是myVar被分配了类型Any.处理这种情况的最佳方法是什么?
我正在使用java处理selenium和testNG ..我对此代码有一些问题:
Assert.assertEquals(webDriver.getCurrentUrl(), "http://google.com");
Run Code Online (Sandbox Code Playgroud)
问题是如何在assertEquals中创建if else条件.像这样
if( Assert.assertEquals(webDriver.getCurrentUrl(), "http://google.com"));
{
//do Nothing
}
else
{
// take screenshoot
}
Run Code Online (Sandbox Code Playgroud)
任何想法的家伙?
我是Selenium的新手,在运行下面的脚本时,我得到空指针异常,并且一旦站点调用加载,测试就会停止运行.我无法理解异常的原因.
代码如下:
package TestNGPackage;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.support.ui.*;
import org.openqa.selenium.firefox.*;
import org.openqa.selenium.*;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import org.testng.annotations.BeforeTest;
public class ParameterizationTest {
WebDriver driver;
@Test(dataProvider="getdata")
public void Login(String Username, String Password)
{
//WebDriverWait wait= new WebDriverWait(driver,60);
//WebElement username= wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("username")));
WebElement username=driver.findElement(By.id("username"));
WebElement password= driver.findElement(By.id("password"));
username.sendKeys(Username);
password.sendKeys(Password);
WebElement SignIn= driver.findElement(By.tagName("button"));
String text = SignIn.getText();
if (text.equalsIgnoreCase("sign in")) {
// sign in btn
SignIn.submit();
}
}
@DataProvider(name="getdata")
public Object[][] testgetdata()
{
Object[][] data = new Object[3][2];
//row1
data[0][0]="ho@abc.com"; …Run Code Online (Sandbox Code Playgroud) 我想在Selenium(Java,Testng)中测试如果我的实际值等于这两个值中的一个,因为我的值可以是Value1或Value2,并且两个值都是正确的.
如果我想断言只有一个相等,我使用这个结构:
String expectedPopUpV1 = "Value1";
String expectedPopUpV2 = "Value2";
String actualPopUp = driver.findElement(By.cssSelector(Value)).getText();
Assert.assertEquals(actualPopUp,expectedPopUp);
Run Code Online (Sandbox Code Playgroud)
但如果我想制作类似的东西,该怎么办?
Assert.assertEquals(actualPopUp,expectedPopUp1||expectedPopUp1);
Run Code Online (Sandbox Code Playgroud) testng ×10
java ×7
selenium ×4
unit-testing ×2
dtd ×1
easymock ×1
maven ×1
mocking ×1
plugins ×1
scala ×1
selenium-rc ×1
sequential ×1
testing ×1
xml ×1