小编And*_*ejs的帖子

TestNG中assertEquals()与assertTrue()之间的实际区别是什么?

我对这两种方法都很困惑,因为两者都可以做同样的事情,比如下面我的代码片段.

使用assertEquals()

String a = "Hello";
String b = "Hello";

assertEquals(a, b);
Run Code Online (Sandbox Code Playgroud)

使用assertTrue()

assertTrue(a.equals(b));
Run Code Online (Sandbox Code Playgroud)

谁能告诉我这两种方法之间的实际区别?

testng

15
推荐指数
1
解决办法
7302
查看次数

与jUnit相比,TestNG的缺点是什么?

我很熟悉JUnit,并听取了TestNG的可能是一些JUnit的annoyences的解决方案 - 例如,它坚持以创建每个测试的测试类的一个单独的实例,从而迫使我使用静态字段我想测试之间重用对象.

(让我们说你同意我的观点,这是一个缺点,而不是将这个问题转化为不是这样的问题)

我在这里问的是,与jUnit相比,TestNG有什么缺点?为什么不使用TestNG,假设这是一个新项目并且没有任何迁移成本?

junit testng

13
推荐指数
2
解决办法
4315
查看次数

如何从Maven中的pom.xml调用testng.xml文件

我正在使用Selenium WebDriver,Eclipse,TestNG和Surefire插件.我无法从pom.xml运行testng.xml文件.当我使用mvn test运行pom.xml时,它直接运行src/test/java中的文件.

我的pom.xml代码是

<groupId>angel</groupId>
<artifactId>Angel</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>

<name>Angel</name>  
<url>http://maven.apache.org</url>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>   </properties>

<dependencies>
          <!-- Java API to access the Client Driver Protocols -->
 <dependency>
     <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>2.21.0</version>
 </dependency>
  <!-- JExcel API is a java library which provides the ability to read, write, and                 modify Microsoft Excel spreadsheets.-->
  <dependency>
     <groupId>net.sourceforge.jexcelapi</groupId>
    <artifactId>jxl</artifactId>
    <version>2.6.10</version>
    </dependency>
   <dependency>
  <groupId>log4j</groupId>
  <artifactId>log4j</artifactId>
  <version>1.2.14</version>
</dependency>
 <!-- Java API for manipulate the Microsoft Excel Sheets.  -->  
 <dependency>  
<groupId>org.apache.poi</groupId>  
<artifactId>poi-contrib</artifactId> 
 <version>3.5-beta5</version>   
 </dependency>
 <!-- Java Mail …
Run Code Online (Sandbox Code Playgroud)

testng maven-2 maven-plugin pom.xml

10
推荐指数
2
解决办法
6万
查看次数

Java WebDriver等待页面加载

我想获得页面加载的异常,但仍然没有结果.我使用implicitlyWait来设置计时器以抛出异常.

WebDriver driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(1, TimeUnit.MILLISECONDS);
driver.get("http://www.rambler.ru");
driver.quit();
Run Code Online (Sandbox Code Playgroud)

有人可以给我更新建议吗?我需要这个以确保页面加载不会是无限的,并且如果加载时间将超过我在计时器中定义的 - >抛出异常作为结果并跳过TC(失败).

谢谢你,Volodymyr

timeout webdriver

8
推荐指数
1
解决办法
4万
查看次数

Java8中功能接口的用途

关于Java8 内置功能接口,我遇到过很多问题,包括this,this,thisthis.但所有人都在问"为什么只有一种方法?" 或"如果我使用我的功能界面执行X,为什么会出现编译错误"等等.我的问题是:当我在自己的界面中使用lambda时,这些新功能接口的存在目的什么

请考虑以下来自oracle文档的示例代码:

    // Approach 6: print using a predicate
     public static void printPersonsWithPredicate(List<Person> roster, 
                                                  Predicate<Person> tester) {
            for (Person p : roster) {
                if (tester.test(p)) {
                   System.out.println(p);
                }
            }
        }
Run Code Online (Sandbox Code Playgroud)

好的,很好,但这可以用上面的自己的例子来实现(一个单一方法的接口并不新鲜):

      // Approach 5: 
        public static void printPersons(<Person> roster, 
                                        CheckPerson tester) {
            for (Person p : roster) {
                if (tester.test(p)) {
                   System.out.println(p);
                }
            }
        }


  interface CheckPerson {
        boolean test(Person p);
    }
Run Code Online (Sandbox Code Playgroud)

我可以将lambda传递给两个方法. …

java java-8 functional-interface

5
推荐指数
2
解决办法
715
查看次数

RestAssured - 无法识别的字段,未标记为可忽略

(注:我已经看到关于“Jackson 抱怨无法识别的属性”主题的多个问题的回答,但我没有找到专门使用 RestAssured 的对象映射器的问题)

我有 RestAssured 测试,它有效

@Test
public void objectMappingRelyingOnClassAnnotation() {

    User user = RestAssured.get("https://api.github.com/users/andrejss88")
            .as(User.class); // must have 'jackson-databind' dependency

    Assert.assertEquals(user.login, "andrejss88");
}
Run Code Online (Sandbox Code Playgroud)

它之所以有效,是因为该类已注释,如下所示

@JsonIgnoreProperties(ignoreUnknown = true)
public class User {
    public String login;
    public int id;
}
Run Code Online (Sandbox Code Playgroud)

但是,我想使用使用重载方法的替代方法as(),并在不使用注释的情况下传入我自己的映射器:

<T> T as(Class<T> cls, ObjectMapper mapper);
Run Code Online (Sandbox Code Playgroud)

但杰克逊的映射器不起作用:

@Test
public void objectMappingUsingSpecifiedMapper() {

    //  Doesn't compile - Jackson's ObjectMapper != RestAssured's Mapper
    ObjectMapper objectMapper = new ObjectMapper();
    objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

    AnotherUser user = RestAssured.get("https://api.github.com/users/andrejss88")
            .as(AnotherUser.class, objectMapper); …
Run Code Online (Sandbox Code Playgroud)

jackson rest-assured jackson-databind

5
推荐指数
1
解决办法
1981
查看次数

根据 Java 中 Object 的类型选择实现

我有一个父类型

public class IObject{}
Run Code Online (Sandbox Code Playgroud)

并且可以有很多子类(甚至是未来的新子类)

public class Object1 extends IObject{}
public class Object2 extends IObject{}
public class Object3 extends IObject{}
...
public class ObjectN extends IObject{}
Run Code Online (Sandbox Code Playgroud)

然后根据这些对象的类型我必须做不同的操作。

public class StrategyForObject1(){void do{}}
public class StrategyForObject2(){void do{}}
public class StrategyForObject3(){void do{}}
...
public class StrategyForObjectN(){void do{}}
Run Code Online (Sandbox Code Playgroud)

所以我想从我的 Context 类:

   public Conext {
    IObject o;

    public void setObject(IObject o) {
        this.o = o;
    }

    void logic() {
        if (o instanceOf Object1) {
            new StrategyForObject1().do();
        }
        if (o instanceOf Object2) {
            new StrategyForObject2().do();
        } …
Run Code Online (Sandbox Code Playgroud)

java design-patterns strategy-pattern visitor-pattern genetic-algorithm

2
推荐指数
1
解决办法
2372
查看次数