我正在使用 Mockito 和 TestNG 进行单元测试。我有静态方法可以模拟,我尝试了 PowerMock。不幸的是,我无法在 TestNG 中将 DataProvider 与 PowerMock 一起使用。
问题:在使用 PowerMock 时,是否有任何解决方法可以使用 TestNG 的 DataProvider?
我想移动滑块左侧的滑块。但是,selenium webdriver 将其移动到右侧,但不会移动到左侧。我想将滑块移动到滑块总宽度的 25%。我在 java 1.8 和 selenium 2.44 中使用下面给出的代码。我已经尝试了使用向上、向下、向左、向右箭头键的所有选项,但仍然无法实现。
我将不胜感激您的投入。
package RandD;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Action;
import org.openqa.selenium.interactions.Actions;
public class test{
static WebDriver driver;
public static void main(String[] args)
{
driver = new FirefoxDriver();
driver.get("http://jqueryui.com/slider/");
driver.switchTo().frame(0);
slider();
}
public static void slider(){
WebElement slider = driver.findElement(By.id("slider"));
int width=slider.getSize().getWidth();
Actions move = new Actions(driver);
org.openqa.selenium.interactions.Action action = move.dragAndDropBy(slider, ((width*25)/100), 0).build();
action.perform();
System.out.println("Slider moved");
}
}
Run Code Online (Sandbox Code Playgroud) 我在表单中有两个输入字段,其来源如下所述
<input class="col8 last right i-f ssn" data-val="true" data-val-regex="Please enter valid SSN number" data-val-regex-pattern="^((\d{3}-\d{2}-\d{4}|X{3}-X{2}-X{4}))$" id="SSN" name="SSN" type="text" value="" />
<input class="col8 last right i-f" id="MiddleName" maxlength="15" name="MiddleName" onkeypress="return isAlphabetKey(event)" type="text" value="" />
Run Code Online (Sandbox Code Playgroud)
我试图在selenium web驱动程序(Firefox)中使用以下命令发送输入
driver.findElement(By.cssSelector("input[id='SSN']")).sendKeys("55555");
driver.findElement(By.cssSelector("input[id='MiddleName']")).sendKeys("xyz");
Run Code Online (Sandbox Code Playgroud)
对于第一个字段,当我在TestNG下运行时没有出现错误但是第二个字段工作正常我已经为两个输入字段包含了页面源以方便.
我正在尝试以编程方式创建 testng.xml。我使用下面的Java代码
public static createTestSuit(String testClass){
XmlSuite suite = new XmlSuite();
suite.setName("My Suite");
XmlTest test = new XmlTest(suite);
test.setName("My Test");
List<XmlClass> classes = new ArrayList<XmlClass>();
classes.add(new XmlClass(testClass));
test.setXmlClasses(classes) ;
List<XmlSuite> suites = new ArrayList<XmlSuite>();
suites.add(suite);
TestNG tng = new TestNG();
tng.setXmlSuites(suites);
tng.run();
}
Run Code Online (Sandbox Code Playgroud)
“testClass”类包含几个测试方法。我不想运行所有这些方法。如何仅指定我想在上面的代码中运行的测试方法名称,以便上面的方法看起来像
public static createTestSuit(String testClass, List<String> testCasesID){
//code
}
Run Code Online (Sandbox Code Playgroud)
注:我的测试方法是形式
@Test(testName="testCaseID")
public void test1(){
}
Run Code Online (Sandbox Code Playgroud) 我有一个带有页面对象模型的测试自动化框架。我所有的测试都位于同一个包中的不同类中。
在 testng.xml 我有
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Smoke Test">
<test name="SmokeTest">
<classes>
<class name="name.test1"/>
<class name="name.test2"/>
<class name="name.test3"/>
</classes>
</test>
</suite>
Run Code Online (Sandbox Code Playgroud)
问题是在运行 TestNG.xml 之后,如果第一个测试失败,它将停止测试执行。但我想继续执行所有测试用例。
我在我的项目中使用 Jenkins,如果其中一项测试失败,它会立即停止执行。
测试示例
public class LoginTestTest {
public AndroidDriver<AndroidElement> driver;
public AOWebClient aoWebClient;
AOWebClient aoWeb;
public LoginTestTest(AndroidDriver<AndroidElement> driver, AOWebClient aoWeb){
this.driver = driver;
this.aoWeb = aoWeb;
PageFactory.initElements(new AppiumFieldDecorator(driver), this);
}
public LoginTestTest() {
}
SoftAssert softAssert = new SoftAssert();
@BeforeClass
public void setUp() throws Exception {
driver = DesiredCapabilitiesSetup.startAppiumServer();
aoWebClient = DesiredCapabilitiesSetup.getAOWeb();
LogIn …Run Code Online (Sandbox Code Playgroud) 有以下示例代码......在运行测试(和报告)时,我希望将测试名称设置为提供者提供的描述字段(实际上它是任何字符串)。
...但是,即使从 ITest 扩展,似乎所有提供程序参数都附加到 TestName,我想要的只是描述。
所以实际的测试名称应该是 "TestName1" 而不是 "TestName2[1](TestName2, 2, 2, 4)" .. 这是 XML 报告中显示的内容,以及 test.aftertest 名称。
import org.testng.Assert;
import org.testng.ITest;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import java.lang.reflect.Method;
public class TestNgProviderExample implements ITest{
@Test(dataProvider = "summationProvider")
public void testProvider(String description, int number1, int number2, int sum) {
Assert.assertEquals(sum, number1 + number2);
}
@DataProvider(name = "summationProvider")
public Object[][] summationData() {
Object[][] testData = {{"TestName1",1,2,3},{"TestName2",2,2,4}};
return testData;
}
private String reportedTestName = "";
@BeforeMethod(alwaysRun = true)
public void testData(Method method, …Run Code Online (Sandbox Code Playgroud) 我正在使用关键字驱动的数据框架通过 Excel 工作表执行测试脚本。
执行时出现错误:
java.lang.RuntimeException: java.lang.IllegalStateException: 无法从 NUMERIC 单元格中获取 STRING 值
我的硒代码是
package DemoData;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.Assert;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import DataConfig.ExcelDataConfig;
public class ReadArrayData
{
WebDriver driver;
@Test(dataProvider="Tipreports")
public void Dataprovider(String username, String password) throws InterruptedException
{
System.setProperty("webdriver.chrome.driver", "F:\\New folder\\chromedriver.exe");
driver = new ChromeDriver();
driver.get("http://xxxxxxxxxxxxxxxx/");
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
driver.manage().window().maximize();
driver.findElement(By.id("txt_username")).sendKeys(username);
driver.findElement(By.id("txt_pin")).sendKeys(password);
driver.findElement(By.xpath("//*[@id='btn_click']")).click();
Thread.sleep(5000);
//driver.getCurrentUrl();
Assert.assertTrue(driver.getCurrentUrl().contains("http://xxxxxxxxxxxxx/Algorithm_Run.aspx"),"User Not able to Login - Invalid Credentials");
}
@AfterMethod
public void Close()
{
driver.quit();
} …Run Code Online (Sandbox Code Playgroud) 我有一个 jar 将包含在 spring boot 应用程序中,我正在尝试在此进行集成测试,该项目具有用于创建数据源和 JDBC 模板的配置类,我正在使用测试,
当这个jar包含在另一个项目中时,该项目中没有应用程序类,该项目可以很好地获取数据但不在同一个项目中
spring-boot-starter-test 作为依赖添加
配置
@Configuration
public class DatabaseAccesManagementConfig {
@Bean(name = "accessmngmtDataSource")
@Qualifier("accessmngmtDataSource")
@ConfigurationProperties(prefix = "accessmngmt.datasource")
public DataSource accessmngmtDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "accessmngmtJdbcTemplate")
@Qualifier("accessmngmtJdbcTemplate")
public JdbcTemplate accessmngmtJdbcTemplate(@Qualifier("accessmngmtDataSource") DataSource accessmngmtDataSource) {
return new JdbcTemplate(accessmngmtDataSource);
}
}
Run Code Online (Sandbox Code Playgroud)
道类
@Repository
public class ResourcePrivilegesDao {
static final Logger log = LoggerFactory.getLogger(ResourcePrivilegesDao.class);
@Autowired
@Qualifier("accessmngmtJdbcTemplate")
private JdbcTemplate jdbcTemplate;
public List<RP> getAll() {
log.debug("entering getAll()");
String sql = "SELECT * FROM rp";
RowMapper<RP> rowMapper = new …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 log4j.properites 运行我的 selenium-testng 程序。我想知道如何将我的 testng 类与 log4j.properties 集成。
我尝试运行测试,但我无法看到生成任何日志。现在我不确定接下来的步骤 - 有人可以指导我吗?
公共类登录测试{
WebDriver driver;
Logger log = Logger.getLogger(loginTest.class.getName());
@BeforeMethod
public void setUp() {
System.setProperty("webdriver.chrome.driver" , "C:/Users/User/Desktop/Selenium Drivers/chromedriver.exe");
driver = new ChromeDriver();
driver.get("https://www.google.com/");
driver.manage().window().maximize();
driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);
driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
}
@Test
public void titleTest() {
String title = driver.getTitle();
System.out.println(title);
Assert.assertEquals(title, "Google");
}
@Test
public void gmailLogoTest() {
boolean b = driver.findElement(By.linkText("Gmail")).isDisplayed();
Assert.assertTrue(true);
}
@AfterMethod
public …Run Code Online (Sandbox Code Playgroud)使用放心的 jar 发出 GET api 请求时,我的程序在作为 TestNg 运行时抛出以下错误
输出:
java.lang.NoClassDefFoundError: io/restassured/path/json/mapper/factory/JsonbObjectMapperFactory
at io.restassured.config.RestAssuredConfig.<init>(RestAssuredConfig.java:41)
at io.restassured.RestAssured.<clinit>(RestAssured.java:421)
at SimpleGetTest.GetWeatherDetails(SimpleGetTest.java:13)
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 org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:583)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:719)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:989)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
at org.testng.TestRunner.privateRun(TestRunner.java:648)
at org.testng.TestRunner.run(TestRunner.java:505)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415)
at org.testng.SuiteRunner.run(SuiteRunner.java:364)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1137)
at org.testng.TestNG.runSuites(TestNG.java:1049)
at org.testng.TestNG.run(TestNG.java:1017)
at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:115)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
Caused by: java.lang.ClassNotFoundException: io.restassured.path.json.mapper.factory.JsonbObjectMapperFactory
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown …Run Code Online (Sandbox Code Playgroud) testng ×10
java ×9
selenium ×2
apache-poi ×1
automation ×1
jar ×1
log4j ×1
mocking ×1
powermock ×1
rest-assured ×1
spring ×1
spring-boot ×1
unit-testing ×1