在junit中如何assert一个对象是null或者空字符串

在junit测试中,我们对某个对象需要判断是否为null,但是有时候在一些情况下,该对象可能是””(也就是空字符串),这个时候我们以前写得那个Assert.assertNull()就不行了。其实这种情况在现实中也是大量存在的,比如页面表单提交后的action获取表单中的字段,假如是字符串,那么往往是空字符串的存在。

那么,在junit中如何assert一个对象是null或者空字符串,我查了下资料,可以见这里:https://www.baeldung.com/java-assert-string-not-empty,我们可以用 Apache Commons Lang 来完成这个需求:
Assert.assertTrue(StringUtils.isEmpty(someObject));
不再用Assert.assertNull(),改用Assert.assertTrue()

这里有个小小的工程,可以看看 Assert.assertTrue(StringUtils.isEmpty(someObject)); 的使用:
https://github.com/champbay/springboot-test.git

SpringBootTest中启用不同的profiles

在springboot中,我们的工程常常有下面的配置文件:

application.properties
application-prod.properties
application-dev.properties

其中,application.properties是默认就加载的,prod和dev是需要在application.properties中指定spring.profiles.active=xxx来确定。

在测试的时候,需要测试环境,不管是prod还是dev都不适用的,所以在测试的时候,需要有个地方来设定配置文件。

查了资料,首先查到一篇文章:如何在@SpringBootTest中动态地启用不同的profiles,这篇文章讲了一大堆,我也没有全部看全,可能场景不适合我吧,总觉得这个需求应该非常普遍简单的,总不至于这么复杂的来解决吧。

继续查资料,看到这一篇文章:https://stackoverflow.com/questions/41985262/spring-boot-test-overriding-bootstrap-properties,这里有个人回答了几种办法,其中使用 Add @ActiveProfiles(‘test’),大家 test class 这种方式我觉得应该是最最正确的解决办法。

为此,我做了一个很小的测试工程放在 github 上,用来验证@ActiveProfiles(‘test’),大家可以去下来junit测试看看,看了后就能明白了。

工程地址:
https://github.com/champbay/springboot-test.git