Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Javolution测试模式,dos和don';ts_Java_Unit Testing - Fatal编程技术网

Java Javolution测试模式,dos和don';ts

Java Javolution测试模式,dos和don';ts,java,unit-testing,Java,Unit Testing,当一个人在为测试编写测试时,有什么样的模式以及应该做什么和不应该做什么?我特别想知道: execute()不允许抛出异常。如何应对?以RuntimeException或存储在变量中并在TestCase.validate()中断言,还是什么 是否有任何图形化的运行程序向您显示失败的测试,例如在Eclipse中?也许有人编写了一个JUnit包装器,这样我就可以使用EclipseJUnitRunner了 javadoc和javolution源代码给出了一些示例和设计原理。 另见 Javolution

当一个人在为测试编写测试时,有什么样的模式以及应该做什么和不应该做什么?我特别想知道:

  • execute()不允许抛出异常。如何应对?以RuntimeException或存储在变量中并在TestCase.validate()中断言,还是什么
  • 是否有任何图形化的运行程序向您显示失败的测试,例如在Eclipse中?也许有人编写了一个JUnit包装器,这样我就可以使用EclipseJUnitRunner了

javadoc和javolution源代码给出了一些示例和设计原理。 另见

Javolution测试只包含一个测试,测试代码的执行与验证分离为不同的方法execute()和validate()。因此,相同的testclass可以用于回归测试和速度测试(其中省略了对validate()的调用)。此外,许多测试的执行都是可并行的

这种分离的缺点是:您将获得更多的内存消耗,因为在调用validate()之前需要保存执行代码的结果。(在拆卸中释放这些结果可能是一个好主意。)
如果validate来自与exercise不同的类,那么调试失败可能会比较困难。

您可以通过使用下面的JUnit适配器并在eclipse中运行它来获得某种图形化的testrunner。您可以单独启动/调试失败的测试。不幸的是,图形表示不包括任何关于实际测试的内容——它只显示数字[0]、[1]等等

@RunWith(参数化的.class) 公共类JavolutionJUnit4Adapter{

protected final javolution.testing.TestCase test;

public JavolutionJUnit4Adapter(javolution.testing.TestCase testcase) {
    this.test = testcase;
}

@org.junit.Test
public void executeTest() throws Exception {
    enter(REGRESSION);
    try {
        new javolution.testing.TestSuite() {
            @Override
            public void run() {
                test(test);
            }
        }.run();
    } finally {
        exit();
    }
}

@Parameters
public static Collection<javolution.testing.TestCase[]> data() {
    javolution.testing.TestSuite fp = new WhateverSuiteYouWantToRun();
    List<javolution.testing.TestCase> tests = fp.getTestCases();
    Collection<javolution.testing.TestCase[]> res = new ArrayList<javolution.testing.TestCase[]>();
    for (javolution.testing.TestCase t : tests) {
        res.add(new javolution.testing.TestCase[] { t });
    }
    return res;
}
受保护的最终javolution.testing.TestCase测试;
公共JavolutionJUnit4Adapter(javolution.testing.TestCase测试用例){
this.test=testcase;
}
@org.junit.Test
public void executeTest()引发异常{
进入(回归);
试一试{
新的javolution.testing.TestSuite(){
@凌驾
公开募捐{
试验(试验);
}
}.run();
}最后{
退出();
}
}
@参数
公共静态收集数据(){
javolution.testing.TestSuite fp=新的WhateVersuiteYouwantRun();
列表测试=fp.getTestCases();
Collection res=new ArrayList();
for(javolution.testing.TestCase t:tests){
res.add(newjavolution.testing.TestCase[]{t});
}
返回res;
}
}