Unit testing JUnit5-运行测试类以保持系统状态

Unit testing JUnit5-运行测试类以保持系统状态,unit-testing,kotlin,junit5,Unit Testing,Kotlin,Junit5,我正在设计一个平台,可以说是一个买卖收藏品的交易平台,比如交易卡、邮票、硬币等 有几个过程可以改变通过平台交易的资产状态;例如: 为出售资产做广告 接收资产的购买要约 接受购买要约 接受付款 对于这些过程中的每一个,都有一个逻辑单元来执行每个操作,并使用JUnit5进行单元测试;例如,测试资产是否可以进行广告,如下所示: 类广告资产:TestBase(){ 私有lateinit var资产:资产 重写{ asset=systemUnderTest.Advertised(例如交易卡)

我正在设计一个平台,可以说是一个买卖收藏品的交易平台,比如交易卡、邮票、硬币等

有几个过程可以改变通过平台交易的资产状态;例如:

  • 为出售资产做广告

  • 接收资产的购买要约

  • 接受购买要约

  • 接受付款

对于这些过程中的每一个,都有一个逻辑单元来执行每个操作,并使用JUnit5进行单元测试;例如,测试资产是否可以进行广告,如下所示:

类广告资产:TestBase(){
私有lateinit var资产:资产
重写{
asset=systemUnderTest.Advertised(例如交易卡)
}
@试验
fun`asset应以正确的状态进行adverised`(){
assertEquals(AssetStatus.advised,asset.status)
}
}
在上面的类中,被测试系统的最终状态表示对其进行断言的单个资产的广告

下一个测试是断言可以为资产创建报价;例如:

class CreateAssetOfferTests:TestBase(){
私有lateinit var资产:资产
私有lateinit var报价:报价
重写{
asset=systemUnderTest.Advertised(例如交易卡)
offer=systemUnderTest.offer(资产,示例\u交易\u卡\u offer)
}
@试验
fun`应为指定的资产创建报价`(){
assertEquals(asset.id,offer.assetId)
}
@试验
fun`offer应以正确的状态创建`(){
资产质量(OfferStatus.OFFERED,offer.status)
}
}
…等等,直到最终测试,即测试是否已收到资产付款;例如:

class ReceiveAssetPaymentTests:TestBase(){
私有lateinit var资产:资产
私有lateinit var报价:报价
重写{
val advertisedAsset=systemUnderTest.advertise(例如交易卡)
val initialOffer=systemUnderTest.offer(广告数据集,示例交易卡报价)
offer=systemUnderTest.acceptOffer(initialOffer)
资产=测试中的系统。收到付款(广告数据集)
}
@试验
fun`资产状态应为已收到付款'(){
资产质量(AssetStatus.PAYMENT\u RECEIVED,asset.id)
}
}
如您所见,需要测试的流程越深入,需要添加的测试代码就越多;例如,测试是否已收到付款要求测试设置在做出任何断言之前进行广告、提供、接受提供和接收付款

这似乎有很多重复,因为前面的过程已经过测试。问题是每次测试的设置时间越来越长;例如:

  • 资产广告:30秒
  • 优惠创建:30秒(广告)+25秒(优惠)
  • 报价接受:30秒(广告)+25秒(报价)+25秒(接受)
  • 收到的付款:30秒(广告)+25秒(报价)+25秒(接受)+10秒(收到付款)
是否有组织测试的方法,以便系统的状态能够允许测试类按顺序执行;例如,运行
AdvertiseAssetTests
,然后运行
CreateAssetOfferTests
,最后运行
ReceiveAssetPaymentTests
,并在每次运行测试类后维护系统的状态

这可能吗