Java Junit:如何使每个@Test方法完全隔离?
示例代码:Java Junit:如何使每个@Test方法完全隔离?,java,unit-testing,intellij-idea,junit,Java,Unit Testing,Intellij Idea,Junit,示例代码: public class Count { static int count; public static int add() { return ++count; } } 我希望test1和test2完全分开运行,以便它们都通过。我怎么才能完成呢?我的IDE是Intellij IDEA 假设test1在test2之前运行 这只是一个简化的代码。事实上,代码更复杂,因此我不能在@after方法中仅使count=0。在每次测试之前使用注释重新初
public class Count {
static int count;
public static int add() {
return ++count;
}
}
我希望test1和test2完全分开运行,以便它们都通过。我怎么才能完成呢?我的IDE是Intellij IDEA
假设test1在test2之前运行 这只是一个简化的代码。事实上,代码更复杂,因此我不能在
@after
方法中仅使count=0
。在每次测试之前使用注释重新初始化变量:
@Before
public void resetCount(){
Count.count = 0;
}
在每次测试之前,使用注释重新初始化变量:
@Before
public void resetCount(){
Count.count = 0;
}
没有自动重置类中所有静态变量的方法。这就是您应该重构代码以停止使用静态的原因之一 你的选择是:
3号和4号都是为了不多的收益而做的大量工作。如果您开始尝试并行运行测试,除重构之外的任何解决方案都会给您带来问题。没有自动重置类中所有静态变量的方法。这就是您应该重构代码以停止使用静态的原因之一 你的选择是:
3号和4号都是为了不多的收益而做的大量工作。如果您开始尝试并行运行测试,除了重构之外的任何解决方案都会给您带来问题。但是,这是为了什么?基本上,您正在测试静态方法,所以堆上并没有特定对象的实例。我的建议是重构代码,不要使用静态方法。另一种解决方案是在注释之前使用
@并重置所有需要的值。但是,这样做的目标是什么?基本上,您正在测试静态方法,所以堆上并没有特定对象的实例。我的建议是重构代码,不要使用静态方法。另一个解决方案是在注释之前使用@并重置所有需要的值。如果我有这么多像Count.Count
?有没有更好的方法来提供一个清理环境?@guo只需清理之前注释的方法中的所有内容。如果您这样做了,请不要忘记选择resetCount以外的其他名称。如果我有这么多类似于Count.Count
?有没有更好的方法来提供一个清理环境?@guo只需清理之前注释的方法中的所有内容。如果您这样做了,请不要忘记选择resetCount以外的其他名称。