I realize that the OP (Win Coder) specifically asks for a solution that doesn't use reflection in their question. However, Google serves this as a top result for general questions about testing private constructors in C#.
So, in case you've arrived here and are okay with using reflection. Here's a solution.
In this example, I'm creating an instance of MyClass using a private constructor that takes three (and only three) parameters of types int, string, and string in that order. Types, order and number of parameters need to match.
var constructor = typeof(MyClass).GetConstructor(
BindingFlags.NonPublic | BindingFlags.Instance,
[typeof(int), typeof(string), typeof(string)]);
var myObject = constructor?.Invoke([id, name, desc]) as MyClass;
// Run whatever unit tests you need to run on myObject.
For those who disagree with unit testing private constructors, there is an Entity Framework Core use case where your private constructor is being used publically. Douglas Gaskell mentioned it in his comment on the accepted answer.