Java 通过方法调用调用Junit断言

Java 通过方法调用调用Junit断言,java,testing,junit,junit4,assertion,Java,Testing,Junit,Junit4,Assertion,我正在编写一个由5种测试方法组成的JUnit4测试类。 所有这5种测试方法都有相同的10行代码 在一种方法中移动这些代码行是否是最佳做法,例如,public void callAssertions(){..} 从所有测试中调用此方法?我认为这是一个更简洁的解决方案是的。就我个人而言,我总是尽可能地把每件事都分开,这样每次测试都是完全独立的。只要是这样,就没问题。正如马特·弗莱克(matt freake)的评论所提到的-,有不同的观点,但我会做的是性质相似的单独断言 因此,例如,如果您想要断言人员

我正在编写一个由5种测试方法组成的JUnit4测试类。 所有这5种测试方法都有相同的10行代码

在一种方法中移动这些代码行是否是最佳做法,例如,
public void callAssertions(){..}

从所有测试中调用此方法?

我认为这是一个更简洁的解决方案是的。就我个人而言,我总是尽可能地把每件事都分开,这样每次测试都是完全独立的。只要是这样,就没问题。

正如马特·弗莱克(matt freake)的评论所提到的-,有不同的观点,但我会做的是性质相似的单独断言

因此,例如,如果您想要断言人员的详细信息,我会将它们分成一个
assertPersonDetails()
方法,以此类推,用于其他断言。这实际上取决于下面的业务逻辑


我不建议像您建议的那样将它们全部分离成一个通用的命名方法
callAssertions()

与所有代码一样,您应该确保测试中的每个测试和每个方法都是可读和可理解的

在你的顶级测试方法中应该有一个清晰的模式:给定X,when Y,然后Z。你可以从每个给定的/then/when部分提取公共代码,但不应该混合使用它们


因此,如果AssertThatZZisConsistent(…)方法仅从“then”部分提取,那么它是可以的。但是一位执行官说,如果将“时间”和“然后”部分结合起来,ZZISConsistent(…)是不合适的。

对此有不同的意见——总结得相当好