单元测试工具RandomizedTesting、JUnitBenchmark、nose介绍

以下为你介绍的单元测试工具都可用在Linux系统上:RandomizedTesting(JUnit 测试的扩展)、JUnitBenchmark(帮你用 JUnit 来测试一些性能问题)、nose(Python单元测试的扩展)。

1、RandomizedTesting(JUnit 测试的扩展)

单元测试工具RandomizedTesting、JUnitBenchmark、nose介绍

RandomizedTesting 是一个 JUnit 测试的扩展,封装了内置重复随机的测试和超时控制、参数工厂、线程执行组等等。针对JUnit,ANT和Mavenstable的随机测试基础结构。

受Apache Lucene项目基础结构的启发,该项目为JUnit 4.x测试带来了一个重构的独立运行器,一切都与JUnit兼容,并且可以在您喜欢的IDE中工作。该项目具有ANT和Maven集成,允许在并发隔离的JVM中执行测试,负载平衡和多种报告选项,包括引人入胜的报告和结果可视化。

特点:

可重复的随机JUnit测试的所有管道。

参数化的测试套件,测试组,侦听器和验证器。

高级线程泄漏控制选项和超时。

ANT任务和Maven插件,用于隔离地同时运行测试。

示例代码:

@ThreadLeakScope(Scope.TEST)

@ThreadLeakAction({Action.WARN, Action.INTERRUPT})

@ThreadLeakLingering(linger =1000)

publicstaticclassTheGoodBadAndUglyextendsRandomizedTest {

@Test

publicvoidgood() {

// I do nothing and I'm good.

}

@Test

@Repeat(iterations =10)

publicvoidbad() {

// I fail randomly, about 20% of the time.

assertFalse(randomIntBetween(1,100) <=20);

}

@Test

publicvoidugly() {

// I start and abandon a thread which falls

// outside the test's scope. The test will fail.

newThread() {

publicvoidrun() {

RandomizedTest.sleep(5000);

}

}.start();

}

}

下载地址:https://github.com/randomizedtesting/randomizedtesting

2、JUnitBenchmark(帮你用 JUnit 来测试一些性能问题)

单元测试工具RandomizedTesting、JUnitBenchmark、nose介绍

如果你希望用 JUnit 来测试一些性能问题,那么 JUnitBenchmark 可以帮到你,主要特性:

记录执行时间。

监控垃圾收集。

测试热身。

示例测试:

package org.javabenchmark;

import com.carrotsearch.junitbenchmarks.AbstractBenchmark;

import com.carrotsearch.junitbenchmarks.BenchmarkOptions;

import javolution.text.TextBuilder;

import org.junit.Test;

/**

* Benchmark for String concatenation. Compares StringBUilder (JDK) and

* TextBuilder (Javolution).

*/

public class StringConcatenationBenchmark extends AbstractBenchmark {

public static final long LOOPS_COUNT = 10000000;

@Test

@BenchmarkOptions(benchmarkRounds = 3, warmupRounds = 1)

public void stringBuilderBenchmark()  {

StringBuilder builder = new StringBuilder();

for (long i = 0; i < LOOPS_COUNT; i++) {

builder.append('i').append(i);

}

System.out.println(builder.toString().length());

}

@Test

@BenchmarkOptions(benchmarkRounds = 3, warmupRounds = 1)

public void textBuilderBenchmark()  {

TextBuilder builder = new TextBuilder();

for (long i = 0; i < LOOPS_COUNT; i++) {

builder.append('i').append(i);

}

System.out.println(builder.toString().length());

}

}

3、nose(Python单元测试的扩展)

单元测试工具RandomizedTesting、JUnitBenchmark、nose介绍

nose是一个Python单元测试的扩展,能自动发现并运行测试,使得测试更容易。

安装和快速入门:

在大多数类似UNIX的系统上,您可能需要以root用户或使用sudo运行这些命令。

使用setuptools/distribute安装nose:

easy_install nose

或:

pip install nose

或者,如果您未安装setuptools/distribute,请下载源程序包,然后以常规方式安装它:解压缩并解压缩源程序包,cd到新目录,然后:

python setup.py install

但是,请注意,如果未安装setuptools/distribute,则将无法使用第三方nose插件。

这将安装nose库以及nose测试脚本,您可以使用它们自动发现和运行测试。

现在,您可以为项目运行测试:

cd path/to/project

nosetests

您应该看到类似以下的输出:

Ran 34 tests in 1.440s

OK

表示发现了nose并进行了测试。

要获得nose测试的许多命令行选项的帮助,请尝试:

nosetests -h

关于Python3的说明:

nose支持python3,在python3上从源代码构建需要分发,如果您尚未安装分发版,则python3 setup.py install将通过分发版的引导脚本进行安装。

此外,如果您的项目使用的是2to3,则python3 setup.pynasntests命令将自动将源代码转换为2to3,然后使用python 3运行测试。

警告:nose本身支持python 3,但许多3rd-party插件不支持。

下载地址:https://github.com/nose-devs/nose

注明

以上就是单元测试工具RandomizedTesting、JUnitBenchmark、nose的介绍内容,这些单元测试工具都能使用在Linux操作系统中。

栏目相关文章