8月 24

Java读写Excel

Java读写Excel

工作中经常需要对Excel进行读写操作,java操作excel文件比较流行的是apache poi包,excel分为xls(2003)和xlsx(2007)两种格式,操作这两种格式的excel需要不同的poi包。

  • xls格式
      <dependency>
          <groupId>org.apache.poi</groupId>
          <artifactId>poi</artifactId>
          <version>3.11-beta1</version>
      </dependency>
    
  • xlsx格式
      <dependency>
          <groupId>org.apache.poi</groupId>
          <artifactId>poi-ooxml</artifactId>
          <version>3.11-beta1</version>
      </dependency>
    

继续阅读

7月 30

Selenium-spoon-plugin插件开发

对于web系统的自动化测试,selenium使用比较多,它支持多种语言java、python、C#等,本文中使用java。selenium执行case时,支持截图,代码如下:

File file =  ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(file, new File("screen.png"));

后面用Robotium写android自动化的时候,在github上发现android-spoon这个插件,可以将android自动化运行时的截图生成html报表,提供单机图片预览,多机图片比较等功能。于是想到也可以用到selenium上。初步做了实现,后续逐步改进。现在实现的功能有:

  • html浏览单独浏览器上case执行中的截图
  • 预览单个case截图的gif动态图
  • 查看case执行过程中日志(使用log4j)

继续阅读

7月 28

Java生成动态GIF图片

写selenium自动化时,为了查看运行效果,后给浏览器截图,想到可以生成gif图片来快速预览。看到已经有人实现了,直接拿过来。作者是Kevin Weiner

共涉及到三个java文件,分别是NeuQuant.java,LZWEncoder.javaAnimatedGifEncoder.java,有了这三个文件,我们可以自己编写方法调用

chrome_com.yeetrack.selenium.test.BrowserTest_baiduTest

继续阅读

7月 14

Httpclient MultipartEntity is deprecated

HttpClient是apache提供的很方面的java http客户端,它可以模拟浏览器发送请求,get、post、head等。我们在提交post表单时,表单中如果需要上传文件,那么表单的类型一般是**enctype=”multipart/form-data”,HttpClient也提供这种方法,需要用到http-mime.jar这个包。

MultipartEntity mutiEntity = newMultipartEntity();
File file = new File("d:/photo.jpg");
mutiEntity.addPart("desc",new StringBody("你好吗?", Charset.forName("utf-8")));
mutiEntity.addPart("pic", newFileBody(file));

httpPost.setEntity(mutiEntity);

在比较新的httpmime包中,MultipartEntity这个类已经不推荐使用了,推荐使用下面的方式 继续阅读

6月 12

Selenium WebDriver高级用法

掌握selenium初级用法后,来继续深入学习。

选择合适的WebDrvier

WebDriver是一个接口,它有几种实现,分别是HtmlUnitDrvierFirefoxDriverInternetExplorerDriverChromeDriverOperaDriver,除了 InternetExplorerDriver只能在Windows平台运行,其他WebDriver均能跨平台。

如果追求运行速度,HtmlUnitDriver是首选,但是它没有运行界面,不能实时看到运行效果。如果想看到运行效果,可以使用FirefoxDrvier,它会真正打开浏览器,在屏幕上运行,因此我们可以监测页面元素的位置、CSS的值等,但是代价就是速度慢。 继续阅读

6月 09

Jmeter-maven-plugin高级配置之分布式设置

通过<remoteConfig>标签来设置远程机器

使用jmeter Gui时可以很方便的配置远程节点,来分布式地压测,具体方法,不在描述。现在来说使用jmeter-maven-plugin这个插件如何配置分布式。

通过这个<startServersBeforeTests>标签,可以将–runremote命令发送到jmeter.properties中配置的节点机器上,来开启远程服务。

通过这个<stopServersAfterTests>标签,可以将–remoteexit命令发送到jmeter.properties中配置的节点机器上,来关闭远程服务。

<startServersBeforeTests> 和 <stopServersAfterTests>标签可以分开使用,因此我们可以通过其他进程来开启和关闭jmeter的远程服务。 继续阅读

6月 06

Jmeter-maven-plugin高级配置之压测结果文件格式

去掉结果中的时间戳

jmeter-maven-plugin插件默认在每个jtl结果文件的文件名中添加时间戳。如果你不想要这个时间戳,可以通过设置<testResultsTimestamp>标签来禁用。样例如下:

            <plugin>
                <groupId>com.lazerycode.jmeter</groupId>
                <artifactId>jmeter-maven-plugin</artifactId>
                <version>1.9.0</version>
                <executions>
                    <execution>
                        <id>jmeter-tests</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>jmeter</goal>
                        </goals>
                        <configuration>
                            <testResultsTimestamp>false</testResultsTimestamp>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

继续阅读

6月 06

Jmeter-maven-plugin高级配置之选择测试脚本

在pom.xml文件中可以指定运行哪些jmx脚本。

运行所有的测试脚本

Jmeter默认运行${project.base.directory}/src/test/jmeter文件夹中的所有脚本,下面是示例。

    <project>
        [...]
            <build>
                <plugins>
                    <plugin>
                        <groupId>com.lazerycode.jmeter</groupId>
                        <artifactId>jmeter-maven-plugin</artifactId>
                        <version>1.9.0</version>
                        <executions>
                            <execution>
                                <id>jmeter-tests</id>
                                <phase>verify</phase>
                                <goals>
                                    <goal>jmeter</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        [...]
    </project>

继续阅读

4月 30

Mongodb python驱动教程

安装

使用python驱动mongodb需要下载、安装PyMongo包

  • Windows用户,点击这里下载。
  • 使用pip安装在linux平台使用pip命令安装:

    pip install pymongo

    指定版本:

    pip install pymongo==2.6.3
    升级:

    `pip install –upgrade pymongo 继续阅读

4月 29

使用maven warpath插件合并多module的war包


现在java 项目一般使用maven、gradle等工具来管理jar包、打包、发布。如果一个项目有很多模块,那般是分成多个module,主目录有个parent,负责包含全部的module,然后目录中多个module文件夹,分别依赖parent或者其他module。最近有个项目,项目很久,代码全部放在一起,随着业务拓展变得与越来越庞大,于是其对进行module拆分。

问题

  1. 多个模块可能交叉依赖。
  2. 每个模块可能都会有前台页面的代码,jsp、js等。
  3. maven打包的时候能否war包、jar包一起打。 继续阅读