Tag: 测试

我应该如何在Java中测试私有方法?

可能重复: unit testing私有方法的最佳方法是什么? 我是一名初学程序员,我不知道如何编写一个结构良好的unit testing应用程序。 我想编写能够在之后添加有效unit testing的应用程序。 问题在于private方法 – 它们不能在类之外进行测试。 我是否应该通过更改所有protected private方法来解决此问题,并让测试类扩展源类? 或者有更好的解决方案吗? 我的解决方案(private splitLetters => protected splitLetters)将如下工作: 来源类: class MyClass{ protected splitLetters(int num){ return num+2; } } 测试类: class Test_MyClass extend MyClass{ public splitLettersTest(){ for(int i=0;i<100;i++){ System.println(parent.splitLetters(i)); } } } 解决方案: 不测试私有方法 – 有时私有方法正在执行非常复杂的任务,应该进行非常好的测试,我们不希望该用户可以访问这些方法。 很快,解决方案正在将私有方法更改为受保护。 嵌套类测试方法 – 有问题,因为QA在源代码中进行了更改 反思 – 如果这可以调用私有方法,它看起来像一个很好的解决方案http://www.artima.com/suiterunner/private3.html (我应该学习更多来理解reflection。我不明白reflection是怎么做的如果我们可以从另一个类调用私有方法,那就不要破坏拥有公共和私有方法的所有想法。) 没有定义私有方法 (正如我在我的解决方案中所示) […]

mockito如何创建模拟对象的实例

当我创建一个类Employee的模拟对象。 它不会调用Employee对象的构造函数。 我知道内部Mockito使用CGLIb和reflection,创建一个代理类,将类扩展为mock。 如果它没有调用employee的构造函数,那么employee类的mock实例是如何创建的?

TestNG依赖来自不同类的OnMethods

当要依赖的测试与具有此批注的测试的类相同时,@ Test注释的dependsOnMethods属性可以正常工作。 但是如果要测试的方法和依赖方法在不同的类中,它就不起作用。 示例如下: class c1 { @Test public void verifyConfig() { //verify some test config parameters } } class c2 { @Test(dependsOnMethods={“c1.verifyConfig”}) public void dotest() { //Actual test } } 有没有办法解决这个限制? 一个简单的方法是在class c2中创建一个调用c1.verifyConfig() 。 但这将是太多的重复。

Selenium是Web UI测试,因为________是Windows应用程序UI测试

我对仅测试客户端Java应用程序的UI感兴趣。 这样做最流行的框架是什么? 你推荐的框架是什么? 另外,为什么Selenium不这样做(或者是这样做)? 在我看来,任何可以测试Web应用程序的东西都应该能够测试Windows应用程序。

我如何测试Guice注射?

我向Google Guice提供了连接我的物品的责任。 但是,我如何测试绑定是否运行良好? 例如,假设我们有一个具有依赖关系B A类。 如何测试B是否正确注入? class A { private B b; public A() {} @Inject public void setB(B b) { this.b = b } } 请注意, A没有getB()方法,我想断言Ab不是null 。

如何让maven使用测试资源

当我使用命令:mvn test时,maven使用主要资源而不是src / test / resources中的测试资源。 我如何让maven使用测试资源而不是主要资源? 编辑:我使用Classloader来查找我的资源。 类加载器可以从我的src / test / resources目录中找到资源,但它首先在src / main / java中查找资源。 ClassLoader loader = Thread.currentThread().getContextClassLoader(); InputStream file =loader.getResourceAsStream(“resource.xml”); 或者在运行maven命令时是否可以使用任何属性来优先考虑类路径? 编辑2:我已经发现问题,它确实从测试/资源加载测试,但是我的测试涉及部署webapp(集成测试),当webapp访问资源时,它使用src / main / resources。 有没有办法改变类路径的顺序,或者为一个部署在jetty容器中的WAR使一个在另一个之前?

如何将Java控制台输出传递给文件?

我在应用程序中发现了一个完全冻结JVM的错误。 生成的堆栈跟踪将为开发人员提供有价值的信息,我想从Java控制台检索它。 当JVM崩溃时,控制台被冻结,我无法再复制包含的文本。 有没有办法将Java控制台直接传递给文件或其他一些访问Java应用程序的控制台输出的方法? 更新:我忘记提及,而不更改代码。 我是一名手动测试员。 更新2:这是在Windows XP下,它实际上是一个Web启动应用程序。 管道输出 javaws jnlp-url 不起作用(空文件)。

自动化Eclipse插件开发的unit testing(junit)

我正在开发Eclipse插件,我需要能够为每个插件自动构建和执行测试套件。 (使用Junit) 测试在Eclipse中工作,我可以将插件分解为实际的插件和片段插件,用于unit testing,如此处所述, 此处以及此处的几个地方。 但是,上述每种方法都会导致相同的问题:发出构建或应触发测试的java ant task / commandline命令,不会产生可观察到的副作用,并返回值“13”。 我已经尝试了所有我能找到的东西,并且我已经了解了Eclipse如何启动(例如:从v3.3开始,你不能再使用startup.jar – 它不存在 – 但你应该使用org.eclipse.equinox.launcher )。 不幸的是,虽然这显然是必要的信息,但远远不够。 我正在使用Eclipse 3.4,Junit 4.3.1(org.junit4包,但我更喜欢使用JUnit 4.4。请看这里 。) 所以,我的问题是:你如何自动化Eclipse插件的构建和测试? 编辑:为了澄清,我想使用像ant +巡航控制这样的东西,但我甚至无法让unit testing在 Eclipse之外运行。 我说“类似的东西”,因为还有其他技术可以完成同样的事情,而且我不会那么挑剔,因为它丢弃了一个可行的解决方案,因为它使用的是Say,Maven或Buckminster,如果这些技术使这变得更容易。 Edit2:上面提到的’Java Result 13’似乎是由于无法找到coretestrunner造成的。 从日志中: java.lang.RuntimeException: Application “org.eclipse.test.coretestapplication” could not be found in the registry. The applications available are: org.eclipse.equinox.app.error, com.rcpquickstart.helloworld.application. at org.eclipse.equinox.internal.app.EclipseAppContainer.startDefaultApp(EclipseAppContainer.java:242) at org.eclipse.equinox.internal.app.MainApplicationLauncher.run(MainApplicationLauncher.java:29) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at […]

JUnit:在调用每个@Test方法之前的新实例。 有什么好处?

目前,我正在阅读“JUnit in action”一书。 在本书中,我发现了以下文字: 在调用每个@Test方法之前,JUnit会创建测试类的新实例。 这有助于提供测试方法之间的独立性,并避免测试代码中的无意的副作用。 因为每个测试方法都在新的测试类实例上运行,所以我们无法跨测试方法重用实例变量值。 现在我认为这种方法没有多大意义: 例如: public class CalculatorTest { @Test public void testAdd_1() { Calculator calculator = new Calculator(); double result = calculator.add(1, 1); assertEquals(2, result, 0); } @Test public void testAdd_2() { Calculator calculator = new Calculator(); double result = calculator.add(2, 2); assertEquals(4, result, 0); } } 对于测试类CalculatorTest,没有任何好处。 好的,让我们去关注另一个例子: public […]

Selenium WebDriver StaleElementReferenceException

运行我的测试时出现此错误:org.openqa.selenium.StaleElementReferenceException:元素不再附加到DOM 关于如何解决上述exception的任何想法? 这发生在我的网格中,它有一个动态的ref Xpath表达式