Вы действительно уверены, что хотите отбросить результаты теста?
Скажите, что у кого-то плохой день, и вводит в код несколько ошибок A, B и C. Вы можете узнать об A в понедельник, поэтому вы это исправите, и вы не знаете о проблеме B до вторника, а затем вы не исправите C до среды. Но поскольку вам не хватало тестового покрытия в течение половины недели, ошибки, введенные в понедельник, не были обнаружены до тех пор, пока они не были представлены, и это дороже и занимает больше времени, чтобы исправить их.
Если вам не нужно много времени проводить тесты после сбоя, разве это не полезно?
Это говорит о том, что взломать исправление в ваших тестовых библиотеках не так уж сложно. Был ли вся возможная codepaths неудачи теста установить статические переменную StopAssert.Failed = true;
(возможно, обернув звонки Assert
и ловить AssertFailedExceptions
. Затем просто добавить [TestInitialize()]
метод для каждого тестового класса, чтобы остановить каждый тест после сбоя!
public class StopAssert
{
public static bool Failed { get; private set; }
public static void AreEqual<T>(T expected, T actual)
{
try
{
Assert.AreEqual(expected, actual);
}
catch
{
Failed = true;
throw;
}
}
// ...skipping lots of methods. I don't think inheritance can make this easy, but reflection might?
public static void IsFalse(bool condition)
{
try
{
Assert.IsFalse(condition);
}
catch
{
Failed = true;
throw;
}
}
}
[TestClass]
public class UnitTest1
{
[TestInitialize()]
public void Initialize()
{
StopAssert.IsFalse(StopAssert.Failed);
}
[TestMethod]
public void TestMethodPasses()
{
StopAssert.AreEqual(2, 1 + 1);
}
[TestMethod]
public void TestMethodFails()
{
StopAssert.AreEqual(0, 1 + 1);
}
[TestMethod]
public void TestMethodPasses2()
{
StopAssert.AreEqual(2, 1 + 1);
}
}
[TestClass]
public class UnitTest2
{
[TestInitialize()]
public void Initialize()
{
StopAssert.IsFalse(StopAssert.Failed);
}
[TestMethod]
public void TestMethodPasses()
{
StopAssert.AreEqual(2, 1 + 1);
}
[TestMethod]
public void TestMethodFails()
{
StopAssert.AreEqual(0, 1 + 1);
}
[TestMethod]
public void TestMethodPasses2()
{
StopAssert.AreEqual(2, 1 + 1);
}
}
Я, имеющего одна и та же проблема: – Zambonilli