powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / MSTest генерация сборки имитаций
2 сообщений из 2, страница 1 из 1
MSTest генерация сборки имитаций
    #39071210
mishavin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я пытаюсь использовать для тестирования MSTest.
Сделал проект библиотеки MyLib с указанным ниже кодом.
Cделал проект для теста. Добавил в проект для теста ссылку на MyLib.

Теперь пытаюсь сгенерировать код сборки имитаций для создания заглушек и оболочек.
Код генерится, но в нем куча ошибок, касающихся объекта Range, например:

Имя типа или пространства имен "Range" отсутствует в пространстве имен "ml::Microsoft.Office.Interop.Excel"
(пропущена ссылка на сборку?)
[c:\Users\vin\documents\visual studio 2013\Projects\MyLib\UnitTestProject1\obj\Debug\Fakes\ml\f.csproj]
c:\Users\vin\documents\visual studio 2013\Projects\MyLib\UnitTestProject1\f.cs 100 114 UnitTestProject1

1. Как сделать так, чтобы Range стал видимым в сборке имитаций?
2. Как отказаться от попытки MSTest сделать заглушку для Range?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
using Microsoft.Office.Interop.Excel;
 
namespace MyLib
{
    public interface IGetString
    {
        string GetString(Range rng, string whatFind);
    }
    public class Class1
    {
        IGetString _iGetString;
        public Class1(IGetString iGetString)
        {
            _iGetString = iGetString;
        }
 
        public string GetString(Range rng, string whatFind)
        {
            return _iGetString.GetString(rng, whatFind);
        }
    }
}
...
Рейтинг: 0 / 0
MSTest генерация сборки имитаций
    #39073042
mishavin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решил.
Распишу подробнее для тех, кто с этим встретится.

План был такой - сгенерировать файл с заглушками и на базе него сделать свой, исправив ошибки.

При работе понял как управляется генерация при помощи файла fakes. Оказывается этот файл совсем не нужно удалять. Прямо в нем можно нужно указать что генерировать, а что нет, а при перестроении проекта сборка имитаций будет сама перегенерирована по новым правилам.
Так как мне нужна была только заглушка на интерфейс я сделал так:

<Fakes xmlns=" http://schemas.micro...m/fakes/2011/">
<Assembly Name="MyLib1"/>
<StubGeneration>
<Clear/>
<Add Interfaces ="true"/>
</StubGeneration>
<ShimGeneration>
<Clear/>
</ShimGeneration>
</Fakes>

Т.е. я указал сделать заглушки на все интерфейсы, ну а так как он у меня один - то будет сделана заглушка на IGetMyVal.

После этого нужно взять сгенерированный код.
Для этого нужно встать на проект теста в проводнике решения и нажать кнопку "Показать все файлы" (вверху проводника).
После этого в каталоге obj\Debug\Fakes\ml1 нужно встать на файл f.cs и скопировать его содержимое.

ml1 - это alias, который дала для моей библиотеки MyLib1 система генерации кода. В Вашем случае будет другое.

После этого в сборке ТЕСТА нужно добавить пустой класс и скопировать в него содержимое из буфера клавиатуры (из f.cs).

Класс нужно создавать именно в сборке для теста. Если попытаться сделать отдельный модуль и в нем сделать класс (и сделать указатель на него в тестовой сборке), то получим ошибку компиляции о что-то типа "... тип не может работать через границы сборки..."

Теперь подправляем полученный класс. Нужно сделать следующее:
1. Закомментировать строки extern... и [assembly...
2. Удалить mqttf:: и ml1:: (Про наименование ml1 я уже писал выше). Ошибка заключается в том, что Range генератор кода помещает под ml1!


Все. Заглушка готова. Можно ей пользоваться!

Ах, да. Удалите файле MyLib1.fakes (имя_вашего_модуля.fakes) из каталога Fakes - это удалит генерацию кода сборки имитаций.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / MSTest генерация сборки имитаций
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]