Тестирование Синглтона - PullRequest
0 голосов
/ 15 февраля 2010

Я создал синглтон, который в конструкторе выглядит так:

public static class MyCertificate
{
    private readonly static X509Certificate2 _singletonInstance = new X509Certificate2();

    static MyCertificate()
    {
        if(_singletonInstance == null)
            _singletonInstance = GetMyCertificateFromDatabase();
    }

    public static X509Certificate2 MyX509Certificate
    {
        get { return _singletonInstance; }
    }
...
}

свойство MyX509Certificate возвращает _sigletonInstance.

Мне нужно отладить вызываемые методы, такие как GetMyCertificateFromDatabase (). Так в an.aspx.cs у меня есть это:

    protected void Page_Load(object sender, EventArgs e)
    {
        InsertCertificate();
    }

    private static void InsertCertificate()
    {
        X509Certificate2 certificate;

        certificate =  MyCerfiticate.MyX509Certificate;

    }

Я не совсем уверен, как пройти через так, чтобы я мог пройти через вызываемые методы, которые помогают установить этот синглтон. Он просто переходит к свойству и затем возвращается, когда я отлаживаю InsertCertificate ()

Ответы [ 5 ]

2 голосов
/ 15 февраля 2010

_singletonInstance инициализируется до вызова MyCertificate (). Там вы проверяете, является ли _singletonInstance нулевым, и поскольку это не так, GetMyCertificateFromDatabase не вызывается.

2 голосов
/ 15 февраля 2010

Я предполагаю, что вы используете visual studio. В Visual Studio перейдите в Инструменты-> Параметры-> Отладка и снимите флажок, который говорит, что шаг за свойствами и операторами

Редактировать: Я только что заметил, что вы делаете следующее:

private readonly static X509Certificate2 _singletonInstance = new X509Certificate2();

Это предотвратит обнуление вашего _singletonInstance при его проверке.

1 голос
/ 15 февраля 2010

Почему бы вам не попытаться установить точку останова в статическом конструкторе MysCertificate? Это должно помочь.

0 голосов
/ 15 февраля 2010
public static class MyCertificate
{
    private readonly static X509Certificate2 _singletonInstance = GetMyCertificateFromDatabase();

    public static X509Certificate2 MyX509Certificate
    {
        get { return _singletonInstance; }
    }
...
}

установить точку останова на поле с его инициализацией.

0 голосов
/ 15 февраля 2010

в окне модуля, модуль, в котором есть ваш синглтон, появляется в списке? Есть ли загруженные символы? Если нет, загрузите символы для него вручную, и тогда вы сможете его отладить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...