当前位置: 首页 > 知识库问答 >
问题:

创建干式Junit测试对象

胥良平
2023-03-14

我正在创建两个单元测试来测试我的应用程序逻辑。在下面,我根据顺序是否为真创建了两个最终变量。有没有一种方法可以不必为每种订单类型创建最终变量,从而使其干燥?

  private static final Order FIRST_ORDER = createOrder(
     "watch",
      "123",
      true
  );

  private static final Order SECOND_ORDER  = createOrder(
     "watch",
      "123",
      false
  );

  private static Order createOrder(String productName, String productId, Boolean isNewOrder){
  //Logic
  }

  @Test
  public void shouldTestOrderCreation(){
      OrderHelper helper = new OrderHelper();
      helper.createOrder(FIRST_ORDER);
  }

  @Test
  public void shouldTestOrderCreation(){
      OrderHelper helper = new OrderHelper();
      helper.createOrder(SECOND_ORDER);
  }

共有2个答案

葛修永
2023-03-14

函数调用比常量更好;其生命周期/时间与单个单元测试方法相同。数据构造函数不错。我认为这是人们对常数感到的最具风格上的恼怒。

这甚至适用于引用其他数据的复杂数据。我甚至可能会争辩说,将数据本地放在一起更具可读性。

在这两种情况下,DRY可能意味着不使用相同的值复制可能不相关的属性,例如产品名称。但这在某种程度上是不可避免的。

李言
2023-03-14

这个怎么了?


  @Test
  public void testNewOrder(){
      createOrder(true);
  }

  @Test
  public void testNotNewOrder(){
      createOrder(false);
  }

  void createOrder(boolean newOrder) {
      OrderHelper helper = new OrderHelper();
      helper.createOrder("watch", "123", newOrder);
  }

您还可以参数化测试:

@ParameterizedTest
@ValueSource(booleans={true, false})
void createOrder(boolean newOrder) {
  OrderHelper helper = new OrderHelper();
  helper.createOrder("watch", "123", newOrder);
}

但这一切都取决于你想要测试哪种断言。

 类似资料:
  • 我的一个GAE类正在从HTML文件创建[datastore Entity][1]: 当我试图在JUnit测试中调用此方法时,会引发以下异常: 问题似乎是在我的代码示例的第一行中创建键。

  • 考虑一个maven实用工具模块(模块1),它定义了一个抽象类:AbstractFoo.java。在测试资源下,编写了所述类的模型:foomockup.java。还编写了一个测试类:AbstractFootest.java。 现在考虑第二个模块(模块2),它包含一个使用AbstractFoo的类,并声明测试用例:bar.java和bartest.java。java在创建Bar实例的同时创建FooMo

  • 昨天,我编写并运行了一个Katalon测试套件,今天,我试图将Katalon与Jenkins集成。我成功地安装了Jenkins,根据这些说明为Katalon测试创建了一个新的工作,但是当我开始构建它时,我得到了失败的构建。 特别是,这是我不断收到的错误消息: 我继续将文件夹结构从我指定的项目目录复制到Jenkins工作区。经过后来的检查,我发现,当Jenkins运行Katalon测试时,文件实际上

  • 您好,我对Junit和Mockito的单元测试相当陌生。我认为我对这些原则有一个相当合理的理解,但我似乎找不到任何解释来解释我特别想在网上测试什么。 我想测试一个方法,它调用其他几个方法(void和non-void),该方法还实例化了方法体中的对象。不幸的是,我不能分享代码,因为它不是我的,但这里有一个通用格式: 目前我只关心测试method_1,我不能直接测试,因为它是一个私有方法,所以我必须通

  • 我正在尝试为springboot应用程序中的一个简单控制器编写一个测试。但是,由于为我的TopicRepository和topiccontroller创建bean而收到错误。我参考了一个教程,对spring boot开发并不陌生,所以不确定它是如何工作的。我怎样才能使测试工作? 控制器测试 控制器 专题存储库 我得到的错误是 UnsatisfiedDependencyException:创建名为'