John Resig Processing.js является хорошей платформой для этого.
Как сказал мой друг ... зачем тратить время на написание утверждения, если вы просто собираетесь его выключить?
Учитывая эту логику, все утверждают операторы должны выглядеть так:
if(!(....))
{
// or some other appropriate RuntimeException subclass
throw new IllegalArgumentException(".........");
}
Чтобы ответить на ваш вопрос так, как вы, вероятно, захотите: -)
import org.junit.BeforeClass;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@RunWith(Suite.class)
@Suite.SuiteClasses({
FooTest.class,
BarTest.class
})
public class TestSuite
{
@BeforeClass
public static void oneTimeSetUp()
{
ClassLoader.getSystemClassLoader().setDefaultAssertionStatus(true);
}
}
Затем запустите набор тестов, а не каждый тест. Это должно (работает в моем тестировании, но я не читал внутреннюю структуру кода JUnit) привести к тому, что статус утверждения будет установлен до загрузки любого из тестовых классов.
В качестве альтернативы вы можете скомпилировать свой код так, чтобы утверждения не могли быть отключены. В Java 6 вы можете использовать «fa.jar - принудительная проверка утверждения, даже если он не включен» , мой небольшой взлом.
Я предлагаю три возможных (простых?) Исправления, которые сработают для меня после быстрого теста (но вы можете необходимо проверить побочные эффекты использования блока статического инициализатора)
1.) Добавьте блок статического инициализатора к тем тестам, которые полагаются на включенные утверждения
import ....
public class TestXX....
...
static {
ClassLoader.getSystemClassLoader().setDefaultAssertionStatus(true);
}
...
@Test(expected=AssertionError.class)
...
...
2. ) Создайте базовый класс, который расширяют все ваши тестовые классы, требующие включения утверждений
public class AssertionBaseTest {
static {
//static block gets inherited too
ClassLoader.getSystemClassLoader().setDefaultAssertionStatus(true);
}
}
3.) Создайте набор тестов, который запускает все ваши тесты
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@RunWith(Suite.class)
@Suite.SuiteClasses({
//list of comma-separated classes
/*Foo.class,
Bar.class*/
})
public class AssertionTestSuite {
static {
//should run before the test classes are loaded
ClassLoader.getSystemClassLoader().setDefaultAssertionStatus(true);
}
public static void main(String args[]) {
org.junit.runner.JUnitCore.main("AssertionTestSuite");
}
}
В Eclipse вы можете перейти в Windows
→ Настройки
→ Java
→ JUnit
, в который можно добавить -ea
каждый раз, когда создается новая конфигурация запуска. Он также добавляет параметр -ea
в конфигурацию отладки.
Полный текст рядом с флажком:
Добавить '-ea' к аргументам ВМ при создании нового запуска JUnit конфигурация