学点儿Java_Day7_在实体类当中IDEA无法进行单元测试(@Test没有启动按钮)

  在敲代码体会继承和访问修饰符的时候忽然遇到了单元测试不管用的情况,表现为没有启动按钮
在这里插入图片描述
  经过一番折腾,发现我的测试是在具有构造函数的实体类Person当中进行的,当我把所有的构造函数删除后,启动按钮又出来了,加上之后又没了。
在这里插入图片描述
  然后我就和ChatGPT发生了如下对话:

  A: 类里边是不是最好不要进行单元测试
  Q: 通常情况下,类本身不应该包含单元测试。单元测试是用来测试类的方法和行为是否符合预期的工具,而不是测试类本身。类应该专注于实现特定的功能或者模型化特定的实体,而不应该包含测试逻辑。

  通常情况下,单元测试应该编写在一个独立的测试类中,测试类中的方法测试目标类的方法和行为。这种做法的好处包括:

  分离关注点(Separation of Concerns): 将测试逻辑与实际的业务逻辑分开,使代码更加清晰和易于维护。

  保持代码整洁(Keep Code Clean): 将测试代码与生产代码分离,有助于保持生产代码的整洁和简单,减少混乱和不必要的复杂性。

  提高可测试性(Improve Testability): 将测试代码放在单独的测试类中,可以更轻松地编写和运行测试,提高代码的可测试性。

  符合测试驱动开发(TDD)原则: 测试驱动开发强调先编写测试,再编写实现代码。将测试代码与生产代码分开,有助于更好地实践TDD原则。

  因此,最好的做法是将单元测试代码放在单独的测试类中,测试目标类的方法和行为,而不是将测试逻辑直接写在目标类中。
在这里插入图片描述
  嗯,就是这么神奇,这个解释我也勉强接受吧,以后注意就好了

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了设计参数化单元测试用例,您可以考虑使用JUnit框架提供的Parameterized Runner。下面是一个示例: ```java @RunWith(Parameterized.class) public class NextDayTest { @Parameters(name = "{index}: nextDay({0})={1}") public static Collection<Object[]> data() { return Arrays.asList(new Object[][] { { "2019-01-01", "2019-01-02" }, { "2019-02-28", "2019-03-01" }, { "2019-12-31", "2020-01-01" }, { "2020-02-29", "2020-03-01" } }); } private String inputDate; private String expectedNextDay; public NextDayTest(String inputDate, String expectedNextDay) { this.inputDate = inputDate; this.expectedNextDay = expectedNextDay; } @Test public void testNextDay() { assertEquals(expectedNextDay, nextDay(inputDate)); } private String nextDay(String date) { // 实现计算下一天的逻辑 } } ``` 在上述示例中,我们使用`@RunWith(Parameterized.class)`注解来告诉JUnit使用Parameterized Runner来运行测试。然后,我们定义了一个静态方法`data()`,该方法返回一个包含测试数据的集合。在这个方法中,我们可以定义多个测试用例,每个测试用例都是一个对象数组,包含输入参数和期望结果。 接下来,我们定义了两个私有成员变量`inputDate`和`expectedNextDay`,它们分别用于存储当前测试用例的输入参数和期望结果。在测试类的构造函数中,我们将这些变量初始化为当前测试用例的值。 最后,在测试方法`testNextDay()`中,我们调用`nextDay()`方法计算实际结果,并使用`assertEquals()`方法来比较实际结果和期望结果是否相等。在比较结果时,我们使用了`@Parameters(name = "{index}: nextDay({0})={1}")`注解来指定测试用例的名称,以便在测试报告中更好地显示测试结果。 当您运行此测试类时,JUnit会自动运行所有测试用例,并为每个测试用例输出测试结果。这样,您就可以轻松地设计参数化单元测试用例,并确保代码的正确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值