小编Sel*_*ena的帖子

如何使用Lombok摆脱Intellij中Mavenized项目的重复类错误

我有一个Maven管理的Lombok项目,我使用Intellij.在构建之后,由于target/generated-sources/delombok中生成的源,我总是在Intellij中遇到关于重复类的大量错误.我有什么办法可以摆脱这些错误吗?现在我只删除目标文件夹,但这真的很烦人.

我在Maven中有标准配置,而lombok源代码在main/src/lombok中:

       <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.5.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok-maven-plugin</artifactId>
            <version>1.16.8.0</version>
            <executions>
                <execution>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>delombok</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

  <profiles>
    <profile>
        <id>lombok-needs-tools-jar</id>
        <activation>
            <file>
                <exists>${java.home}/../lib/tools.jar</exists>
            </file>
        </activation>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.projectlombok</groupId>
                    <artifactId>lombok-maven-plugin</artifactId>
                    <version>1.16.8.0</version>
                    <dependencies>
                        <dependency>
                            <groupId>sun.jdk</groupId>
                            <artifactId>tools</artifactId>
                            <version>1.8</version>
                            <scope>system</scope>
                            <systemPath>${java.home}/../lib/tools.jar</systemPath>
                        </dependency>
                    </dependencies>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>
Run Code Online (Sandbox Code Playgroud)

intellij-idea maven lombok intellij-lombok-plugin

12
推荐指数
2
解决办法
4716
查看次数

如何在REST Assured中访问底层的Jackson ObjectMapper?

我需要在REST Assured中配置底层的Jackson ObjectMapper.我正在使用REST Assured编写REST API测试,我需要定义一些过滤器来注册ObjectMapper,用于将我的对象序列化为JSON:

    String newTestSuite = "{\"name\":\"Added through Rest API\",\"description\":\"Test Description\",\"steps\":[]}";

    FilterProvider filters = new SimpleFilterProvider().addFilter("createNewTestSuite", new NewTestSuiteFilter());
    ObjectMapper om = new ObjectMapper();
    om.setFilters(filters);

    try {
        TestSuite ts = om.readValue(newCaspianTest, TestSuite.class);

        RequestSpecification requestSpec = new RequestSpecBuilder()
            .setBaseUri("https://somesite.com")
            .setBody(ts)
            .setUrlEncodingEnabled(false)
            .build();

        ResponseSpecification responseSpec = new ResponseSpecBuilder()
            .expectStatusCode(200)
            .expectStatusLine(Matchers.containsString("200 OK"))
            .build();

        RestAssured.given()
            .auth().basic("testUser","testPassword")
            .spec(requestSpec)
            .log().all()
            .post("/restendpoint")
                .then()
                .log().all()
                .spec(responseSpec);

    } catch(JsonParseException jpe) {

    } catch(JsonMappingException jme) {

    } catch(IOException ioe) {

    }
}
Run Code Online (Sandbox Code Playgroud)

}

java jackson rest-assured

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

是否存在默认的类级别注释,该注释未被弃用,默认情况下指定非空返回值

谷歌让我失望.曾经有过这样的注释: ReturnValuesAreNonnullByDefault.

但现在已弃用此选项,并且javadoc未指示要使用的新注释.整个类的@Nonnull不适用于返回值,因为我刚刚测试了它,并且我没有得到返回null的方法的警告.我不想特别注释每一个返回值,那么有一个很好的选择吗?

java annotations findbugs

7
推荐指数
1
解决办法
1527
查看次数

如何使用PowerMock和Mockito模拟枚举类的实例?

我试着按照这个非常相似的问题的答案提供的例子,但它对我不起作用.我收到以下错误消息:

java.lang.IllegalArgumentException: Cannot subclass final class class com.myproject.test.support.ExampleEnumerable
    at org.mockito.cglib.proxy.Enhancer.generateClass(Enhancer.java:447)
    at org.mockito.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)
    at org.mockito.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:217)
    at org.mockito.cglib.proxy.Enhancer.createHelper(Enhancer.java:378)
    at org.mockito.cglib.proxy.Enhancer.createClass(Enhancer.java:318)
    at org.powermock.api.mockito.repackaged.ClassImposterizer.createProxyClass(ClassImposterizer.java:123)
    at org.powermock.api.mockito.repackaged.ClassImposterizer.imposterise(ClassImposterizer.java:57)
    at org.powermock.api.mockito.internal.mockcreation.MockCreator.createMethodInvocationControl(MockCreator.java:110)
    at org.powermock.api.mockito.internal.mockcreation.MockCreator.mock(MockCreator.java:58)
    at org.powermock.api.mockito.PowerMockito.mock(PowerMockito.java:143)
Run Code Online (Sandbox Code Playgroud)

我需要一个简单的模拟实例enum class.我不需要模拟它的任何方法.

这是我想要模拟的类:

public enum ExampleEnumerable implements IEnumerable<ExampleEnumerable> {
    EXAMPLE_ENUM_1("Test Enum 1"),
    EXAMPLE_ENUM_2("Test Enum 2");

    final String alias;

    ExampleEnumerable(final String alias) {
        this.alias = alias;
    }

    @SuppressWarnings({"VariableArgumentMethod", "unchecked"})
    @Override
    public @Nullable
    String getAlias(final @Nonnull IEnumerable<? extends Enum<?>>... context) {
        return alias;
    }
}
Run Code Online (Sandbox Code Playgroud)

我有以下TestNG设置:

import static org.powermock.api.mockito.PowerMockito.mock;

@PrepareForTest({ ExampleEnumerable.class})
@Test(groups …
Run Code Online (Sandbox Code Playgroud)

java enums mockito powermock powermockito

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

绑定不匹配错误和java泛型方法

我收到以下错误:

Bound mismatch: The generic method constructPage(WebDriver, int, Class<T>) of type     
Page<T> is not applicable for the arguments (WebDriver, int, Class<HomePage>). The 
inferred type HomePage is not a valid substitute for the bounded parameter <T extends 
Page<T>>
Run Code Online (Sandbox Code Playgroud)

我正在尝试登录并返回主页,如果成功,则返回LoginPage,如果不使用泛型.

我有一个基类,Page由SecuredPage扩展,用于登录墙后面的页面.我写了一个通用的辅助方法来构造任何类型的页面.LoginPage上的登录方法使用此方法.LoginPage扩展页面和HomePage扩展SecuredPage.SecuredPage扩展了Page.如果返回LoginPage,则登录方法有效,但我在尝试返回HomePage时遇到上述错误.由于HomePage是页面的子类,因为它的父类扩展了Page,所以我很困惑为什么HomePage不是有界参数的有效替代品<T extends Page<T>>.

public abstract class Page<T extends Page<T>> extends SlowLoadableComponent<T> {

    protected static final <T extends Page<T>> T constructPage(WebDriver driver, 
    int timeoutInSeconds, java.lang.Class<T> pageClass) 
    {
        Page<T> p = null;

        try {
            Constructor<T> pageConstructor = pageClass.getConstructor(
            WebDriver.class, String.class, Integer.TYPE);
            p …
Run Code Online (Sandbox Code Playgroud)

java generics selenium-webdriver

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

如何使用PowerMock在Selenium框架中对页面对象进行单元测试

我正在开发一个基于Selenium 2并基于Page Object设计模式构建的自动化框架.我想开始考虑为我的代码编写测试套件.由于各种原因,其中一些与效率有关,而其他一些与我缺乏所有权和对该框架应该测试的Web应用程序测试环境的控制有关,我想避免必须启动浏览器并使用SUT来验证我的框架代码.所以,我认为Mock对象将是不错的选择.

问题是我无法真正地围绕模拟对象的想法,我真的无法在互联网上找到一个体面的具体例子,说明这将如何实际工作.我确实找到了一个看起来很有希望的链接,但这些例子真的太抽象了,实际上对我没用.

http://www.methodsandtools.com/archive/testingcodetdd.php

所以,我想我会发布我的简单的LoginPage页面对象,并要求使用PowerMock为这个页面对象提供一个或两个单元测试的简单示例.这是我的LoginPage对象的源代码:

public final class LoginPage extends Page<LoginPage> {

    @FindBy(how = How.ID, using = "username")
    private WebElement usernameBox;

    @FindBy(how = How.ID, using = "password")
    private WebElement passwordBox;

    public LoginPage(final WebDriver driver) {
        this(driver, driver.getCurrentUrl(), DEFAULT_TIMEOUT_IN_SECONDS);
    }

    public LoginPage(final WebDriver driver, final String url) {
        super(driver, url, DEFAULT_TIMEOUT_IN_SECONDS);
    }

    public LoginPage(final WebDriver driver, final String url, final int   
        timeoutInSeconds) {
        super(driver, url, timeoutInSeconds);
    }

    public final void enterUsername(final String username) {
        usernameBox.clear();
        usernameBox.sendKeys(username);
    }

    public final void …
Run Code Online (Sandbox Code Playgroud)

java selenium unit-testing powermock selenium-webdriver

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

ChromeDriver - 可怕的"元素在点(x,y)处不可点击.其他元素将收到点击

我有一个网络应用程序,我正在尝试编写selenium测试,我遇到了Chrome驱动程序的问题.用户可以使用向导类型界面来填写表单.有一个按钮可以添加一行有几个设置.我用黑色概述了这一点.蓝色矩形显示按钮的可单击区域.这个矩形的中间没有重叠.

在此输入图像描述

问题是有一个巨大的div包含整个屏幕,Chrome说这个div会得到点击.那么,我该如何解决这个问题呢?这似乎不正确的行为,我不能单击此按钮,因为有一个周围的div标签.如果这是正确的行为,几乎没有任何东西可以点击.

在此输入图像描述

我想点击的按钮是这样的:

 <button id="add-thisSetting" class="btn">Add This Setting</button>
Run Code Online (Sandbox Code Playgroud)

周围的div是:

 <div class="application-tour-overlay"></div>
Run Code Online (Sandbox Code Playgroud)

这是一个缩写的html源:

<div id="editBase">
  <div class="edit-buttons application_edit_controls">
    <div id="thingamajigSettings" class="application_thingamajig_settings">
      <div id="thisSetting" class="application_thissetting application-tour-spotlit">
        <div class="control-title">This Setting
        </div>
        <div class="thisSetting-block">
          <div>
            <div class="scrolling-table" style="overflow-y: auto; overflow-x: hidden;">
              <div class="add-thisSetting-bar">
                <div class="btn-group pull-right">
                  <button id="add-thisSetting" class="btn">Add This Setting</button>
                  <button class="btn dropdown-toggle" data-toggle="dropdown">
                    <ul class="dropdown-menu">
                </div>
              </div>
            </div>
          </div>
          <div id="rulescontainer" class="application_rule_view">
            <div id="settings">
              <div class="edit-buttons application_edit_controls">
              </div>
            </div>
          </div>
          <div id="app_notify_manager" class="application_notify_manager">
          </div>
        </div>
      </div>
    </div>
  </div>
</div>
<div class="identityOfMe-widget-ft"></div>
<div …
Run Code Online (Sandbox Code Playgroud)

java selenium-chromedriver selenium-webdriver

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

在Selenium WebDriver中拖放的JavaScript解决方法

在我的测试环境设置中,clickAndHold对我不起作用.尝试使用高级用户交互执行时,我一直收到此错误:

"不能按多个按钮或按下按钮." 调用方法时:[wdIMouse :: down]"

我已经用selenium版本2.31.0-2.35.0测试了多个版本的Firefox,而使用selenium 2.35的Firefox 21测试的问题最少.其他组合有问题,click()无声地失败,可见元素被视为不可见.

我想使用JavaScript解决方法将一个元素拖放到另一个元素,但在google搜索之后我无法找到任何体面的例子.

javascript java selenium selenium-webdriver

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

调用get in sure-sure时的空指针异常:无法在null对象上获取属性'assertionClosure'

我试图使用restured来实现RESTful API的测试,但是在尝试调用get动作时我遇到了一个空指针异常.授权是一种自定义方案,因此一旦我获得了请求的授权签名,我就将其作为标头添加到请求中:

    String auth = ...CUSTOM ALGORITHM ...;
    String pragma = ... OTHER CUSTOM HEADER ...;

    RequestSpecification requestSpec = new RequestSpecBuilder()
       .addHeader("Authorization", auth)
       .addHeader("pragma", pragma)
       .build();

    RestAssured.baseURI = "https://blahblah.staging.somewhere.net";
    RestAssured.port = 443;
    RestAssured.basePath = "/endpoint_name/somefolder/resource?status=active";
    RestAssured.urlEncodingEnabled = false;

    requestSpec.get();
Run Code Online (Sandbox Code Playgroud)

这会导致以下错误:

java.lang.NullPointerException:无法在null对象上获取属性'assertionClosure'

java rest groovy rest-assured

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

Java 8 + Maven Javadoc插件:获取URL时出错

我试图生成实际链接到我的依赖项的Javadoc的Javadoc.我已经尝试了各种方法来生成Javadoc,它不会为我的依赖项中的类的引用生成完全限定的类名.我想要使​​用简化的类名链接到Java doc.但是,即使使用Java API类名,我也没有链接并拥有完全限定的类名.我正在使用Java 8.我有以下配置:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <version>2.10.2</version>
            <configuration>
                <reportOutputDirectory>${project.basedir}/target</reportOutputDirectory>
                <destDir>javadoc</destDir>
                <windowtitle>Epiphany</windowtitle>
                <doctitle>Epiphany</doctitle>
                <show>private</show>
                <detectLinks>false</detectLinks>
                <detectOfflineLinks>true</detectOfflineLinks>
                <linksource>true</linksource>
                <detectJavaApiLink>false</detectJavaApiLink>
                <additionalparam>-Xdoclint:none</additionalparam>
                <links>
                    <link>http://docs.oracle.com/javase/8/docs/api</link>
                </links>

            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>javadoc</goal>
                        <goal>test-javadoc</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
Run Code Online (Sandbox Code Playgroud)

我在maven编译器配置中将源设置为Java 8.我尝试使用detectJavaApiLinkset来true省略Java 8 Javadoc的链接,但是Javadoc没有生成Java API类的链接,并且我在Javadoc中对它们的所有引用都是完全限定的类名.

我曾尝试设置detectJavaApiLinkfalse使用与指定的URL(没有,没有尾随斜线)上面的配置,我也得到相同的结果,与此错误一起:

[WARNING] javadoc: warning - Error fetching URL: http://docs.oracle.com/javase/8/docs/api
Run Code Online (Sandbox Code Playgroud)

我已经尝试检测基于我声明的依赖项的链接,我已经尝试将其设置为false然后提供到Javadoc的链接,我仍然没有链接,并且我的依赖项中的类的所有类名都是完全限定的.我到底做错了什么?包列表文件在指定的URL处可用,因此我不明白为什么Javadoc无法访问它们或位于那里的Javadoc.

更新:

将我的maven javadoc插件版本更改为2.10.3.现在,如果我设置detectJavaApiLinktrue并删除链接的Java 8的javadoc,正确生成javadoc的链接到Java API类和使用了简化的名称.

但是,我仍然遇到第三方依赖项问题并链接到他们的Javadoc.如果我设置detectLinkstrue,则无法为其中任何一个找到javadoc.如果我将其设置为false并手动配置位置,我仍然会收到一条错误消息,指出它无法获取URL:

[WARNING] javadoc: warning - Error fetching URL: https://selenium.googlecode.com/git/docs/api/java
Run Code Online (Sandbox Code Playgroud)

我更新的maven …

java javadoc maven maven-javadoc-plugin java-8

5
推荐指数
0
解决办法
2120
查看次数