При реальной необходимости в трудной зависимости между тестом JUnit попробуйте расширение JExample
, JExample представляет отношения производителя-потребителя к поблочному тестированию.
производитель А является методом тестирования, который приводит к его единице под тестом как возвращаемое значение.
потребитель А является методом тестирования, который зависит от одного или нескольких производителей и их возвращаемых значений.
Вы можете установка это в Eclipse для Junit4.4 или 4.5.
import jexample.Depends;
@Test
@Depends("#testEmpty")
public Stack testPush(Stack $) {
$.push(42);
assertFalse($.isEmpty());
return $;
}
, Как упомянуто в этой статье IBM "В преследовании качества кода: JUnit 4 по сравнению с TestNG" :
Одна вещь, которой платформа JUnit пытается достигнуть, тестовая изоляция .
На оборотной стороне, это делает очень трудным указать порядок на выполнение тестового сценария, которое важно для любого вида зависимого тестирования.
Разработчики использовали различные методы для обхождения этого, как определение тестовых сценариев в алфавитном порядке или надежда в большой степени на приспособления (@Before
@After
) для надлежащей установки вещей.Эти обходные решения хорошо для тестов, которые успешно выполняются, но для тестов, которые перестали работать, у них есть неудобное последствие: каждый последующий зависимый тест также перестал работать. В некоторых ситуациях это может привести к большим наборам тестов, сообщив о ненужных отказах
, Так остерегайтесь: при сохранении какого-либо решения для упорядочивания тестов JUnit путем, Вы хотите..., необходимо думать, если та поддержка решений функция "пропуска", чтобы позволить другим тестам продолжаться, даже если один из них перестал работать.
Вы также можете взглянуть на opendns.net и проверить, подходит ли он вашему приложению
Вот пример кода для для начала:
var query = new DnsQuery();
query.Servers.Add("ns1.domainname.com");
query.Servers.Add("ns2.domainname.com");
query.Servers.Add("ns3.domainname.com");
query.Domain = "domain.com";
query.QueryType = Types.TXT;
if (query.Send())
{
Console.WriteLine("TXT:");
var response = query.Response;
foreach (ResourceRecord answer in response.Answers)
{
Console.WriteLine(answer.RText);
}
}
query.QueryType = OpenDNS.Types.MX;
if (query.Send())
{
Console.WriteLine("MX:");
var response = query.Response;
foreach (MX answer in response.Answers)
{
Console.WriteLine("{0} {1}", answer.Preference, answer.Exchange);
}
}
Я думаю, что лучший вариант - изучить протокол DNS (что довольно легко) и реализовать его самостоятельно, используя сокеты .net udp.
DNS - действительно простой протокол для понимания и реализовать.
Более того, вы можете использовать исходный код из DnDNS, чтобы увидеть уловки в программе / протоколе
Вы можете сделать это с помощью «DNS-клиента JH Software для .NET». См. Второй пример кода на http://www.simpledns.com/dns-client-lib.aspx