É então,
Acho que na prática, o que queremos, no fim do dia, é ter só um construtor, público, com o parâmetro ISession como parâmetro obrigatório.
No fim do dia, o que se quer é ter uma classe que claramente mostre para o usuário dela que ela só consegue existir recebendo uma instância de um ISession. Logo, concordo com o entendimento de que ter um construtor formal é mais do uma artimanha para testes com DI - é uma necessidade real do seu modelo!
Relendo a thread e pensando no mundo real, a solução de criar um construtor só para testes atende só em casos mais específicos. Em .NET, usando WPF, muita gente usa esta técnica para injetar uma ViewModel fake para que, em tempo de design, seja possível projetar como ficaria a tela com dados de teste. Bem legal! Usando outro caso do dia-a-dia em .NET, quando se usa DI, os controllers do
ASP.NET MVC recebem suas dependências via injeção mesmo. E não há construtores sem parâmetros.
PS: Jamais injetar em propriedades ou fields