Использование FsCheck, F#-версии библиотеки тестов Haskell QuickCheck, для создания тестов из C# я обнаружил, что генератор случайных строк не генерирует нулевую строку.
using FsCheck.Fluent;
Spec.ForAny<string>(s => s != null).QuickCheck(); // always pass
Кроме того, кажется, что он не обрабатывает нулевые строки по дизайну, но мне не удалось определить его от документация. Например, просто выбрать между двумя строками, одна из которых нулевая, не получится:
var strings = Any.ValueIn<string>(null, "non-null string");
Spec.For(strings, s => true).QuickCheck(); // throws null ref exception
И строки представляют собой особый случай, потому что они обрабатывают специально созданные объекты, такие как
class Thing {}
при смешивании с нулевыми значениями:
var objects = Any.ValueIn(null, new Thing());
Spec.For(objects, s => true).QuickCheck(); // pass