我有一个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) 我需要在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)
}
谷歌让我失望.曾经有过这样的注释: ReturnValuesAreNonnullByDefault.
但现在已弃用此选项,并且javadoc未指示要使用的新注释.整个类的@Nonnull不适用于返回值,因为我刚刚测试了它,并且我没有得到返回null的方法的警告.我不想特别注释每一个返回值,那么有一个很好的选择吗?
我试着按照这个非常相似的问题的答案提供的例子,但它对我不起作用.我收到以下错误消息:
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) 我收到以下错误:
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) 我正在开发一个基于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) 我有一个网络应用程序,我正在尝试编写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) 在我的测试环境设置中,clickAndHold对我不起作用.尝试使用高级用户交互执行时,我一直收到此错误:
"不能按多个按钮或按下按钮." 调用方法时:[wdIMouse :: down]"
我已经用selenium版本2.31.0-2.35.0测试了多个版本的Firefox,而使用selenium 2.35的Firefox 21测试的问题最少.其他组合有问题,click()无声地失败,可见元素被视为不可见.
我想使用JavaScript解决方法将一个元素拖放到另一个元素,但在google搜索之后我无法找到任何体面的例子.
我试图使用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'
我试图生成实际链接到我的依赖项的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.我尝试使用detectJavaApiLink
set来true
省略Java 8 Javadoc的链接,但是Javadoc没有生成Java API类的链接,并且我在Javadoc中对它们的所有引用都是完全限定的类名.
我曾尝试设置detectJavaApiLink
到false
使用与指定的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.现在,如果我设置detectJavaApiLink
到true
并删除链接的Java 8的javadoc,正确生成javadoc的链接到Java API类和使用了简化的名称.
但是,我仍然遇到第三方依赖项问题并链接到他们的Javadoc.如果我设置detectLinks
为true
,则无法为其中任何一个找到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 ×9
maven ×2
powermock ×2
rest-assured ×2
selenium ×2
annotations ×1
enums ×1
findbugs ×1
generics ×1
groovy ×1
jackson ×1
java-8 ×1
javadoc ×1
javascript ×1
lombok ×1
mockito ×1
powermockito ×1
rest ×1
unit-testing ×1