Здравствуйте, у меня есть пара тестовых классов, на которых я использую тот же ресурс, что и я OneTimeSetUp
и OneTimeTearDown
, который IEmbeddable
.
Допустим, у меня есть N
тестовых классов, которые вкоторый я хочу использовать OneTimeSetUp
, OneTimeSetDown
и ресурс (интерфейс IEmbeddedable
). Как я могу создать статический класс EmbeddableController
, который может быть повторно использован всеми тестовыми классами?
В основном яхочу:
-Start static Resource of type `IEmbeddedable` once
-Run TestClass 1 on resource ( set it up +tear it down)
-Run TestClass 2 on resource (set it up + tear it down)
......
-Run TestClass N on resource (set it up +tear it down)
IEВстраиваемый
interface IEmbeddedable:IDisposable {
int ExposedPort { get; }
}
Test_ClassX
class Test_ClassX {
private IEmbeddedable server;
[OneTimeSetUp]
public void Launch() {
server = RedisServer.Launch();
}
[OneTimeTearDown]
public void Stop() {
this.server.Dispose();
}
[TestCase()]
public async Task CanRunEmbeddedServer() {
using (server) {
var multi = new Multiplexer();
using (var link = multi.OpenLink(Address.Create(Port:server.ExposedPort))) {
string rez=await link.FlushAllAsync();
Assert.AreEqual(rez, "OK");
}
}
}
}
Прототип
static class EmbeddedController {
private static IEmbeddedable server;
[OneTimeSetUp]
public static void Run() {
server = RedisServer.Launch();
}
public static void Stop() {
server.Dispose();
}
}
Как я могу добавить этот последний класс во все тестовые классы? Он может быть статическим или нет, в любом случае это будет только один экземпляр.