相关疑难解决方法(0)

JUnit - 我应该在tearUown中为在setUp中实例化的资源分配null吗?

我正在阅读一本关于JUnit的书,作者建议在tearDown方法中使资源归零.为什么?这不是GC的工作吗?它会严重伤害吗?

让我们想到这样的例子:

public class SomeTest extends TestCase {
  Vector vector;
  List<Object> list;  

  protected void setUp() {
    vector = new Vector();
    list = new ArrayList<Object>();
  }

  // messing with resources
  // adding, deleting, testing whatever

  protected void tearDown() {
    vector = null;
    list = null;
  }
}
Run Code Online (Sandbox Code Playgroud)

你怎么看?tearDown中的代码是否必要?

java junit

11
推荐指数
1
解决办法
2330
查看次数

Spring Framework - 单元测试设计

我正在编写尝试并开始讨论Spring Unit测试,特别是Transactional单元测试.

我们目前在各种类中注释了大约441个测试,如下所示:

@RunWith(SpringJUnit4ClassRunner.class)
@TransactionConfiguration
@ContextConfiguration(locations={"/context/ServiceTest-context.xml"}, inheritLocations=false)
public class ServiceTests extends AbstractTransactionalJUnit4SpringContextTests {

    @Test
    public void testSomething() {}

    @Test
    public void testSomethingElse() {}
}
Run Code Online (Sandbox Code Playgroud)

我们的每个测试类都有自己的测试上下文.

我们面临的问题是,当我们运行单个测试类或单个包时,测试运行正常.

但是,当我们想通过使用maven或类似Hudson集成之类的东西来扩展它以运行所有我们的测试(当前> 400).

mvn test
Run Code Online (Sandbox Code Playgroud)

我们达到了一个点,然后开始体验Java GC Limit超出错误.

现在我觉得这取决于我们的测试计划设计,而不是我们需要提高内存限制或关闭警告.

任何人都可以分享他们的经验以及他们解决类似问题的方式吗?

Eggsy

spring garbage-collection maven-2 unit-testing transactional

5
推荐指数
1
解决办法
1009
查看次数

我应该在AfterClass(Java JUnit 4)中使静态变量无效吗?

我创建了一些静态变量@BeforeClass.我应该将它们设置为null @AfterClass吗?这些是非IO相关对象.

例:

public class ClassTest{
   private static String staticText;   
   @BeforeClass
   public static void setUp(){
      staticText="long text";
   }
//test methods

//Is this necessary
@AfterClass
public static void tearDown(){
   staticText=null;
   }    
}
Run Code Online (Sandbox Code Playgroud)

variables null junit static

3
推荐指数
1
解决办法
2861
查看次数