副作用のある関数のテスト

JUnitって基本的に副作用のない関数のテストを行うツールだよな…とふと思った。
副作用(ファイル、DB、画面…etc)のある関数のテストを行うために、いつもツールやライブラリを探しているような気がする。
こういう記事を読むと、副作用のある関数をどうやってテストするのかが、わりと気になってしまう。もちろん、記事に問題があるとか、ツールが良くないとか言っているわけじゃないけど。