Unit testing just means running your programs or subprograms with different inputs and checking the result. Nothing about this is hard in bash. Why would it be?
Edit: want to add that difficult does not mean impossible. Bats exists, and you could structure a bash script to be more easily testable.