我在TestNG中使用Selenium web Driver编写测试用例,我有一个场景,我按顺序运行多个测试(参见下文)
@Test(priority =1)
public void Test1(){
}
@Test(priority =2)
public void Test2(){
}
Run Code Online (Sandbox Code Playgroud)
两个测试都是AJAX调用,其中打开一个对话框,执行测试,然后关闭对话框,然后在页面顶部显示一条通知消息,并在每次成功测试后刷新页面.
问题是: Test2不等待页面刷新/重新加载.假设当Test1成功完成时,Test2将在页面刷新之前启动(即打开对话框,执行场景等).同时页面刷新(在成功执行Test1后必然会发生).现在,由于页面刷新,由于Test2打开的对话框不再存在,然后Test2失败.
(另外,我不知道刷新页面需要多长时间.因此,我不想在执行Test2之前使用Thread.sleep(xxxx))
另外,我不认为
driver.navigate().refresh()
Run Code Online (Sandbox Code Playgroud)
将它放在Test2之前将解决我的问题,因为在这种情况下我的页面将刷新两次.问题是通过代码进行刷新(不确定因为可能需要1秒或3秒或5秒)
最初我在junits中只使用Mockito所以我在@RunWith注释中使用了SpringJUnit4ClassRunner.class,即
@RunWith(SpringJUnit4ClassRunner.class)
Run Code Online (Sandbox Code Playgroud)
由于春季依赖注入工作正常,并正在通过
@Autowired
Someservice someservice ;
Run Code Online (Sandbox Code Playgroud)
但是现在,我还在其中集成了PowerMock.
因此,根据doc,我已经用@RunWith注释替换了提到的类
@RunWith(PowerMockRunner.class)
Run Code Online (Sandbox Code Playgroud)
但是现在,有些服务似乎是空的.有没有办法在@RunWith注释中同时使用SpringJUnit4ClassRunner.class和PowerMockRunner.class
我正在使用Mockito + PowerMock + PowerRule开发Junits
请参阅我之前的问题:使用Mockito在Junit中找不到PowerMock和PowerRule的javassist
现在我已经让我的Junits成功运行了,我遇到了一个奇怪的问题,即Eclipse调试器无法运行,即尽管我的测试正在执行,但我还没有停在断点上(使用SOP语句检查)
现在,当我从Junits中删除PowerRule时,调试器再次开始工作
我不知道为什么会这样.如果您对此有任何想法,请告诉我
谢谢
我们需要在REST调用期间发生异常时返回自定义错误代码和错误消息.我们已经创建了一个异常映射器提供程序,它适用于应用程序代码中的异常.但是,当从CXF代码发生异常时(例如,形成我编写的CustomValidationInterceptor),它不起作用.
例如,如果我请求无效路径参数(例如无效的phoneNumber).在这种情况下,我们需要返回一个JSON格式的自定义错误代码和错误消息,但即使我们创建以处理WebApplicationException一个例外映射器提供商这是行不通的.
有没有办法处理来自cxf拦截器的异常并返回对用户的响应,如下所示?
{
"errorDetail": {
"errorCode": "404",
"errorMessage": "Bad Request"
}
}
Run Code Online (Sandbox Code Playgroud)
我的CustomValidationInterceptor的代码片段:
public class CustomValidationInterceptor extends AbstractPhaseInterceptor<Message>{
public CustomValidationInterceptor() {
super(Phase.PRE_INVOKE); // Put this interceptor in this phase
}
public void handleMessage(Message message) {
MetadataMap<String, String> metadataMap = (MetadataMap<String, String>) message.get("jaxrs.template.parameters");
if(null != metadataMap) {
List<String> list = metadataMap.get("phoneNumber");
if(null != list) {
String phoneNumber = list.get(0);
boolean result = validatePhoneNumber(phoneNumber);
if(!result){
throw new TelusServiceException(Response.status(Response.Status.BAD_REQUEST).build(), 400, "phone number not valid");
}
} else {
throw new TelusServiceException(Response.status(Response.Status.BAD_REQUEST).build(), 400, …Run Code Online (Sandbox Code Playgroud) 我已经将JUnit中的PowerMock和PowerRule与Mockito集成在一起.
这是我的依赖项:
<dependency>
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.12.0.GA</version>
</dependency>
<dependency>
<groupId>asm</groupId>
<artifactId>asm</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>org.powermoc</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>1.4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId>
<version>1.4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4-rule</artifactId>
<version>1.4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-classloading-objenesis</artifactId>
<version>1.4.12</version>
<scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我的测试类是:
public class TestClass extends AbstractShiroTest{
@Rule
public PowerMockRule rule = new PowerMockRule();
@Autowired
SomeService someService;
@Before
public void setUp(){
Map<String, Object> newMap = new HashMap<String, Object>();
newMap.put("userTimeZone", "Asia/Calcutta");
Subject subjectUnderTest = mock(Subject.class);
when(subjectUnderTest.getPrincipal()).thenReturn(LMPTestConstants.USER_NAME);
Session session = mock(Session.class);
when(session.getAttribute(LMPCoreConstants.USER_DETAILS_MAP)).thenReturn(newMap); …Run Code Online (Sandbox Code Playgroud) 我正在使用Selenium Web驱动程序.我有一个文本区域,其中写入了一些文本.现在,我怎么能在前面加上它的一些文本/ HTML或在特定位置插入数据?
以下代码将其附加到文本区域/文本框
driver.findElement(By.xpath("textBox/textArea")).sendKeys("abc");
Run Code Online (Sandbox Code Playgroud)
即.如果文本区域/文本框包含123.上面的结果将是123abc.但我想要abc123或12abc3
PS:我正在测试"电子邮件回复"功能.因此,作为用户,当您回复邮件时,您不会复制文本,然后清除所有文本,然后在写下新文本后将所有文本复制回来,如下所示:
WebElement element = driver.findElement(By.xpath("textBox/textarea"));
String previousText = element.getAttribute("value");
element.clear();
element.sendKeys("abc" + previousText);
Run Code Online (Sandbox Code Playgroud)
请帮忙...
我正在 websphere 7 中使用 neethi-3.0.2 部署一个应用程序 Apache CXF-2.7.5。我遇到以下错误。我的应用程序是弹簧驱动的。当我将 Apache CXF 降级为 apache CXF-2.3.5 时。应用程序部署成功。
同样在Tomcat7中完美运行。
通过在 pom.xml 文件中添加(或覆盖)neethi.jar(使用旧版本 --> 2.5.x)的依赖项,我能够在 Tomcat 上重现此问题。
注意: Apache CXF 2.7.5 带有最新版本的 neethi.jar (3.0.2),因此不会在 Tomcat7 上引起问题。
Web Sphere 是否采用了旧版本的neethi.jar
堆栈跟踪如下:
[7/9/13 19:46:38:577 GMT+05:30] 00000012 FfdcProvider I com.ibm.ws.ffdc.impl.FfdcProvider logIncident FFDC1003I: FFDC Incident emitted on /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/logs/ffdc/server1_2a7e2a7e_13.07.09_19.46.38.57558021.txt com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest() 309
[7/9/13 19:46:38:582 GMT+05:30] 00000012 webapp E com.ibm.ws.webcontainer.webapp.WebApp logServletError SRVE0293E: [Servlet Error]-[CXFServlet]: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cxf' defined in class path resource [META-INF/cxf/cxf.xml]: Instantiation of bean …Run Code Online (Sandbox Code Playgroud) 我正在为Junits使用mockito
我知道mockito donot模拟静态方法,但有没有办法解决这个问题,而不是使用powermock?
谢谢
我想在YUI压缩器中使用maven-minify插件在构建时压缩JS和css.我的JS和CSS保存在不同的文件夹中.例如.'X'JS文件存在于一个文件夹中,其余文件存在于不同的文件夹中.CSS文件的情况也是如此.
另外我想知道,如果文件名从jsFileName.js变为类似jsFileName-min.js的话,如何在JSP中更改JS和CSS 的引用
请让我知道如何使用此插件,因为我对此完全陌生.
我的控制器有一个方法,它返回一个 jsonArray 的字符串表示为
jsonArray.toString()
现在下面是ajax方法
function loadPropertyFile(url) {
$.ajax({
type: "GET",
url: url,
dataType: "text",
success: function(response){
var obj = jQuery.parseJSON(response);
alert(obj);
}
});
Run Code Online (Sandbox Code Playgroud)
}
这里解析出来的变量obj是
"[{"portal.home":"Home"},{"displaytag.tracking.id":"Item ID"},{"displaytag.tracking.itemName":"Item Name"},{"displaytag.tracking.itemType":"Type"}]"
Run Code Online (Sandbox Code Playgroud)
现在我想从 js 中的键访问值
IE。我想访问键“displaytag.tracking.id”的值
问题是当我在做console.log(obj[0]["portal.home"]); 它给了我错误TypeError: obj[0] is undefined
我该怎么办 ?