Formal specification of program behavior allows for verifying program correctness. However, full formal specification through code contracts and invariants is often difficult. Parameterized unit testing is a lightweight specification methodology that builds on the widely-used practice of unit testing. Through parameterized unit tests, developers can guide automated test generation to validate specified properties of program behavior. In this work, we study the use of parameterized unit testing in a comprehensive collection of open source projects, totalling over 3 million lines of code. We analyze over 1,000 parameterized unit tests to determine how developers specify expected behavior, how parameterized unit tests differ from conventional unit tests, and how the parameterized unit testing differs from contract-based specification.