Java 在xUnit或集成测试中使用带有断言的非测试方法

Java 在xUnit或集成测试中使用带有断言的非测试方法,java,unit-testing,continuous-integration,integration-testing,Java,Unit Testing,Continuous Integration,Integration Testing,有一个问题需要讨论,但还有另一个问题可能需要讨论: 让非测试方法在xUnit或集成测试类中具有断言是一种好的做法吗?它们在相同或其他测试类中的测试方法中使用 编辑:当您有多个测试用例需要按特定顺序运行并按该顺序运行时,如何实现一个用例,这些多个测试用例构成另一个测试用例?是否可以将这些测试用例作为带有断言的非测试方法实现,然后有一个测试方法按顺序调用所有这些链式方法?是的,可以。干燥-不要重复你自己。如果您能将多个测试使用的公共代码分解成可重用的块,通常会降低开发和维护成本。@即使它包含(多个)

有一个问题需要讨论,但还有另一个问题可能需要讨论:

让非测试方法在xUnit或集成测试类中具有断言是一种好的做法吗?它们在相同或其他测试类中的测试方法中使用


编辑:当您有多个测试用例需要按特定顺序运行并按该顺序运行时,如何实现一个用例,这些多个测试用例构成另一个测试用例?是否可以将这些测试用例作为带有断言的非测试方法实现,然后有一个测试方法按顺序调用所有这些链式方法?

是的,可以。干燥-不要重复你自己。如果您能将多个测试使用的公共代码分解成可重用的块,通常会降低开发和维护成本。@即使它包含(多个)断言,也会降低成本?是的,即使它包含一个或多个测试断言。例如,您可能对不同的数据进行了不同的测试,但无论如何都要应用相同的断言。@andythonas您能同时查看一下我的编辑吗?非常感谢。这是一个值得单独发布的问题,在第一次搜索副本之后。答案可能部分取决于您的单元测试框架,因此一定要指定它。一般来说,答案是否定的——理想情况下,您需要最少的单元测试,测试一件事,并将在单元测试结果中单独报告。与在报告中看到doAllMyTests()失败相比,看到testFooWithUpperBoundBelowRange()失败的信息要多得多。