Поблочное тестирование класс с внутренним конструктором

Вам необходимо преобразовать значения RGB в HLS / HSL (оттенок яркости и насыщенности), затем вы можете использовать яркость, чтобы определить, нужен ли вам светлый текст или темный текст.

Эта страница содержит некоторые подробности о том, как конвертировать в PHP, а также о выборе дополнительного цвета из этого.

Я только что заметил, что это сайт астрологии - поэтому извиняюсь, если кто-то обиделся.

20
задан Leonard H. Martin 7 November 2009 в 15:07
поделиться

6 ответов

Ничто не мешает вам тестировать внутренности. Просто сделайте внутреннюю часть вашего кода видимой для набора тестов с помощью атрибута InternalsVisibleTo: в AssemblyInfo добавьте

[assembly:InternalsVisibleTo("TestSuiteAssembly")]
46
ответ дан 29 November 2019 в 23:09
поделиться

Вы можете просто сделать свой класс модульного теста наследованием от сеанса (при условии, что ваша среда тестирования не требует наследования от определенного класса). Например, с NUnit:

[TestFixture]
public class SessionTest : Session
{
    public SessionTest()
        : base() // call protected constructor
    {
    }

    [Test]
    public void TestSomething()
    {
    }

}
3
ответ дан 29 November 2019 в 23:09
поделиться

В качестве обходного пути вы можете просто создать TestSession, который наследуется от Session и предоставляет открытый конструктор. Затем внутри вашего модульного теста вы используете TestSession, который в основном делает то же самое, что и исходный объект Session.

public class TestSession : Session
{

   public TestSession() : base()
   {

   }

}
2
ответ дан 29 November 2019 в 23:09
поделиться

Вы хотите использовать такой продукт, как TypeMock , который позволит вам создавать фиктивные (поддельные) экземпляры классов, например:

var myInstance = Isolate.Fake.Instance<Session>();
// mock behavior here
// do assertions here

Вы также можете создавать экземпляры абстрактных классов с помощью TypeMock для записи.

1
ответ дан 29 November 2019 в 23:09
поделиться

Я бы поставил под сомнение ценность создания внутреннего конструктора класса сеанса.

Обычно это означает, что вы пытаетесь помешать другим разработчикам использовать ваш класс. Может быть, было бы лучше сообщить, как работает эта конкретная часть приложения и почему вам нужно получить доступ к сеансу только из диспетчера сеансов?

1
ответ дан 29 November 2019 в 23:09
поделиться

Если вы можете уйти с «защищенным внутренним» конструктором, то, предполагая, что ваши тесты находятся в другой сборке, вы можете добавить атрибут InternalsVisibleTo к своей «подлежащей тестированию-сборке». Это позволит вашим тестам видеть внутренние элементы сборки для проверки ».

Обновление Почему-то прочитал, что ваш конструктор защищен. Он уже является внутренним, поэтому вы можете использовать этот атрибут.

0
ответ дан 29 November 2019 в 23:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: