我正在根据声明的顺序处理我的测试通过或失败的情况。这当然指向未正确隔离的测试。但我对如何找到问题感到难过。 问题是我的junit测试派生自一个类,该类属于在junit上构建的测试框架,并且具有一些依赖注入容器。通过基类设置为每个测试重置容器,因此容器中至少没有延迟对象,因为容器本身是新的。所以我倾向于以下情况。
问题是a)我不知道是否确实如此 - 我该如何找到它?我似乎无法在代码中找到对静态var的引用... b)有没有办法告诉junit转储所有加载的类,并为每个测试方法重新做一次?
答案 0 :(得分:1)
您可以使用@Before
声明方法,例如
@Before public void init()
{
// set up stuff
}
并且JUnit将在每次测试之前运行它。您可以使用它来设置“夹具”(一组已知的新鲜对象,数据等,您的测试将彼此独立地工作)。
还有一个@After
,您可以在每次测试后使用进行任何清理。您通常不需要这样做,因为Java将清理您使用的任何对象,但它可以用于将外部对象(您不创建和控制的东西)恢复到已知状态。
(但请注意:如果您依靠外部对象进行测试,那么您所拥有的不再是单元测试。您无法确定故障是由于您的代码还是外部对象,这是单元测试的目的之一。)