When writing unit tests using the DDD patterns, should I write unit tests only at the Aggregate Root level or should I do it at the Entity/Value Object level?
You should write unit tests for your aggregate only, cause all internal entities don't make sense without aggregate. Test only public methods on the Aggregate. Set the aggregate state, Perform Action, Assert State is changed to needed + Domain events produced. ValueObjects which are used across all aggregates and don't have any relation to a specific aggregate, i.e 'Money', 'Weight', 'Quantity', should be treated as separate units, hence they require separate unit tests.