У меня есть проект Visual Studio 2008 C# .NET 3.5, для которого я выполняю модульные тесты, но я столкнулся с проблемой. Мой код ссылается на стороннюю сборку, которая реализует объекты с внутренними конструкторами.модульное тестирование с объектами от сторонних сборок
Например:
// in 3rd party assembly
public class Bar
{
// internal constructor
internal Bar();
public int Id { get; }
public string Name { get; }
public Foo Foo { get; }
}
public class Foo
{
// internal constructor
internal Foo();
public Collection<Bar> GetBars();
}
Один метод мой, что я хотел бы модульное тестирование заключается в следующем:
// in my assembly
public static Bar FindByName(this Collection<Foo> c, string name)
{
// search through the Foos to find the first bar with the matching name
}
И проверить это следующим образом:
void TestMethod()
{
Collection<Foo> foo_pool = new Collection<Foo>()
{
new Foo() { /*..*/ } // Error! ctor is inaccessible
};
Bar b = foo_pool.FindByName("some_name");
assert_equal (b.Name, "some_name");
}
Но, Я не могу создавать объекты типа Foo
или типа Bar
. Итак, как я могу тестировать свой метод?
Благодаря
Уверены ли вы, что есть внутренние конструкторы? То, как вы написали 'Foo' и' Bar', отображает * неявные * конструкторы. Если вы специально не используете 'internal Foo() {}', то компилятор будет генерировать конструктор без параметров с той же видимостью, что и класс. –
Да, я уверен. Браузер объектов показывает их как внутренние. Я обновил код, чтобы сделать это явным. – PaulH