Tag: 断言

如何在main中的所有声明对象中只选择一次该数组中的随机元素?

我希望这些对象在main中声明的所有对象中只在数组中打印一次随机名称。 我的问题是,它会显示两次或更多的名称。 public class Fighters { private static String[] names = { “Terminator”, “Slicer”,”Ninja”, “cow”, “Robot”, “littlegirl” }; private static int id = 0; public Fighters(){ id++; name = names[(int) (Math.random() * names.length)]; } public String toString(){ return String.format(id+” Name:%-5s, name); } } 在main()我有这些对象 Fighters a1 = new Fighters(); System.out.println(a1.toString()); Fighters a2 = new Fighters(); […]

适当使用断言

能帮助我更好地理解,“断言”与“抛出exception”的适当用法是什么? 每个场景何时适用? 情景1 码 public Context(Algorythm algo) { if (algo == null) { throw new IllegalArgumentException(“Failed to initialize Context”); } this.algo = algo; } 测试 public void testContext_null() { try { context = new Context(null); fail(); } catch (IllegalArgumentException e) { assertNotNull(e); } } 场景2 码 public Context(Algorythm algo) { assert (algo != null); this.algo […]

在java中使用assert有什么用

可能重复: 断言做了什么? 断言测试程序员在开发过程中的假设,而不为exception编写exception处理程序这是我得到的,当我在搜索断言时 。 除此之外,人们还说,它是exception处理的替代方案。 当您不想花时间编写exception处理代码时,断言就会出现。 但是,我没有得到工作和使用。 有人解释这个例子。 class AssertExample { public static void main(String[] args) { int x = 0; assert (x > 0) ? “assertion failed” : “assertion passed”; System.out.println(“finished”); } }

字符串的断言失败消息包含子串

我最近在文本生成软件的文本输出上做了很多function测试,发现自己写了很多 assertTrue(actualString.contains(wantedString)); 但是,失败时的消息是非描述性的 Expected [true], but was [false] 另一种方法是包含自定义失败消息 String failMsg = String.format(“Wanted string to contain: %s, Actual string: %s”, wantedString, actualString); assertTrue(failMsg, actualString.contains(wantedString)); 但是一直手动执行此操作感觉有点乏味。 有没有更好的办法?

为什么在junit中assertEquals和assertSame为两个实例同一个类返回相同的结果?

根据文件 assertEquals()断言两个对象是相等的。 assertSame()断言两个对象引用同一个对象。 所以我期待如果我有一个类似下面的课程 class SomeClass {} 然后 SomeClass someClass1= new SomeClass(); SomeClass someClass2= new SomeClass(); assertSame(someClass1,someClass2); // fail assertEquals(someClass1,someClass2); // fail assertEquals传递和assertSame失败。 因为两个类的值都是等于但它们具有不同的参考位置。 由于我在两种情况下都失败了,那么我的问题是这两者之间有什么区别?

论断言和例外; Java的

在这个特定的场景中,断言比exception更合适吗? 据我所知,当程序FUBAR达到无法恢复并退出的程度时,应使用assert。 我还被告知要始终抛出exception以便清晰和错误消息处理。 每次使用时间之间是否存在细微差别? 有没有一个例子,必须无条件地使用断言代替例外? public void subscribe(DataConsumer c) throws IllegalArgumentException { if (c == null) { // Almost certainly FUBAR throw new IllegalArgumentException(“Can’t subscribe null as a DataConsumer. Object not initialized”); } if (dataConsumerList == null) { // Definetely FUBAR throw new IllegalArgumentException(“Nothing to subscribe to. DataConsumerList is null”); } dataConsumerList.add(c); }

java’assert’和’if(){} else之间的区别退出;’

java assert和if () {} else exit;之间的区别是if () {} else exit; ? 我可以使用if () {} else exit而不是assert吗?

Cobertura覆盖和断言关键字

我对Cobertura测量的unit testing的线路覆盖范围很痛苦,因为我有assert声明未在测试中涵盖。 我应该测试assert离子,有没有办法让Cobertura忽略它们,这样它们不会影响我的测试覆盖率?

为什么在Integer类的Integer.valueOf方法中使用assert?

我正在深入研究Integer类如何实际使用缓存对象,我在Integer.valueOf方法中找到了以下代码: public static Integer valueOf(int i) { assert IntegerCache.high >= 127; if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); } 我的问题是: assert IntegerCache.high >= 127;的用途是什么assert IntegerCache.high >= 127; 我读到断言提供了一种检测和纠正编程错误的有效方法 。 但这是运行时代码所以为什么有人会使用assert? 什么时候会在这种情况下抛出AssertionError ?

何时在客户端和通用GWT代码中使用assert

StackOverflow上有几个问题讨论了何时应该使用assert语句而不是抛出一些exception的问题。 ( 这里 , 这里 , 这里 , 这里和这里的例子。 但是,我开始怀疑assert-versus-throw的传统智慧是基于您在JVM中运行的假设。 在GWT世界中,您的Java被音译为JavaScript并在浏览器的上下文中运行,这一组权衡感觉不同:在浏览器中运行时,断言总是被编译掉,而任何使JavaScript的大小变小的东西是一个胜利,特别是如果你的网络应用程序必须在手机上运行。 断言确实可以在DevMode中运行,因此它们在开发过程中具有实用性。 所以我的问题是:有没有人考虑过一套最佳实践规则来管理如何在GWT中使用断言语句? 我有我的团队成员问我“因为断言被编译出来,拥有它们是否有意义?”,我想对他们有一个好的答案。 此外,是否有人对Google的GWT开发人员在此主题上的理念有所了解? 查看GWT源代码,他们似乎经常使用它。