2009-08-19 4 views
0

Когда я пытаюсь генерировать модульное тестирование для следующего метода (в общественном статическом классе)Ошибки при создании тестов в Visual Studio

private static string[] GetFields(string line, char sep) 
{ 
    char[] totrim = { '"', ' ' }; 
    return line.Split(sep).Select(col => col.Trim(totrim)).ToArray(); 
} 

Выходных тестах говорят:

While trying to generate your tests, the following errors occurred: 
This method or property cannot be called within an event handler. 

Он работает если я сделаю эту функцию общедоступной - я попытался запустить Publicize.exe вручную, она не жалуется, но не имеет никакого значения.

ответ

0

Если ваша функция приватная, то ее личное. Никакие другие сборки, включая вашу тестовую структуру, не смогут увидеть ее напрямую.

Вам либо необходимо сделать его общедоступным (что может сломать вашу модель), выставить публичную функцию обертывания, которую вы четко заявляете только для тестирования (которое открыто для злоупотреблений), или вы можете сделать его доступным только для вашего модульного теста компонент, добавив следующий атрибут (предполагая, что вы используете C#) для класса, который содержит GetFields

[assembly:InternalsVisibleTo("[your unit test component name]")] 

The Microsoft website has more information here

+0

испытанные ли вы это? Насколько я вижу, декларация не имеет никакого значения. Тесты для частных методов все еще не создаются. Тем не менее, я могу изменить на внутреннюю, и это работает даже без объявления сборки ... – Benjol

+0

Я угадываю ваши тесты и в том же проекте/компоненте, что и код, который вы тестируете. Это должно сделать внутренний вариант работы. Мой код работает, если у вас есть тесты во внешних компонентах - вот как мы в настоящее время имеем некоторые тесты, работающие в одном из наших проектов, так что он работает –

Смежные вопросы