Tag: unit testing

如何测试Jersey REST Web服务?

我编写了一个Restful Web服务,必须使用JUnit4进行测试。 我已经使用Jersey Client编写了一个客户端。 但是想知道我是否只能使用junit4来测试我的服务。 有人可以至少帮我提供样品。 我的rest服务具有validation方法,该方法获取用户名,密码并返回令牌。 我已经为authenticate方法编写了测试用例。 但我不确定如何使用url进行测试。 public class TestAuthenticate { Service service = new Service(); String username = “user”; String password = “password”; String token; @Test(expected = Exception.class) public final void testAuthenticateInputs() { password = “pass”; service.authenticate(username, password); } @Test(expected = Exception.class) public final void testAuthenticateException(){ username = null; String token = […]

Powermockito可以在非最终具体类中模拟最终方法吗?

假设我有一个非最终的具体类,其最终方法如下所示。 public class ABC { public final String myMethod(){ return “test test”; } } 是否可以模拟myMethod()在使用Powermockito在junit调用时返回其他内容? 谢谢

如何将测试类包含在Maven jar中并执行它们?

在Maven项目中,我在同一个包中有测试类和源类,但是在不同的物理位置。 …/src/main/java/package/** <– application code …/src/test/java/package/** <– test code 访问测试类中的源类没有问题,但是我想在main方法中运行一个测试运行器并访问AllTest.class这样我就可以创建jar并执行我的测试。 public static void main(String[] args) { // AllTest not found Result result = JUnitCore.runClasses(AllTest.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } System.out.println(result.wasSuccessful()); } 但它不起作用,因为我无法访问测试代码。 我不明白,因为他们在同一个包中。 问题 :如何从应用程序类访问测试类? 或者,Maven如何打包包含测试类和执行测试的胖jar?

Selenium许多日志(如何删除)

我用Firefox 48尝试了Selenium 3.0.1。 我已经尝试过以下代码: java.util.logging.Logger.getLogger( “com.gargoylesoftware.htmlunit”)setLevel(Level.OFF)。 java.util.logging.Logger.getLogger( “org.apache.commons.httpclient”)setLevel(Level.OFF)。 java.util.logging.Logger.getLogger(ProtocolHandshake.class.getName())setLevel(Level.OFF)。 但是一旦我在Netbeans下运行通常的测试,……日志仍然出现: Dec 02, 2016 9:17:53 AM org.openqa.selenium.remote.ProtocolHandshake createSession INFO: Attempting bi-dialect session, assuming Postel’s Law holds true on the remote end Dec 02, 2016 9:17:57 AM org.openqa.selenium.remote.ProtocolHandshake createSession INFO: Detected dialect: OSS 解决这个问题的任何线索?

形成Mockito“语法”

Mockito似乎是一个非常甜蜜的Java存根/模拟框架。 唯一的问题是我找不到关于使用其API的最佳方法的任何具体文档。 测试中使用的常用方法包括: doXXX(???) : Stubber when(T) : OngoingStubbing then(T) : OngoingStubbing verify(???) : T given(T) : BDDOngoingStubbing willXXX(???) : BDDStubber 当你在实践中看到Mockito的例子时,你会看到如下代码: when(yourMethod()).thenReturn(5); 从我读过的所有文档中,我已经确定了Mockito“语法”的几个“模式”,它们是通过菊花链式连接这些方法调用获得的,就像上面的例子一样。 我发现的一些常见模式是: 当/ Then: when(yourMethod())。thenReturn(5); 给定/将:给定(yourMethod())。willThrow(OutOfMemoryException.class); Do / When: doReturn(7).when(yourMock.fizzBu​​zz()); Will / Given / Do: willReturn(any())。given(yourMethod())。doNothing(); validation/执行:validation(yourMethod())。doThrow(SomeException.class); 我正在窒息的是如何选择正确的模式/方法调用组合来模拟我的测试用例。 看起来你可以在看似无穷无尽的组合中将它们连接起来,我不确定哪种模式适合哪个问题。 一些Mockito Guru可以帮助阐明Mockito方法的哪些模式/组合用于哪种类型的测试用例(以及为什么)? 提前致谢!

使用Mokito时,实际对象和模拟对象之间有什么区别?

在下面的程序中,我试图在我的测试用例中使用带有junit的 mockito 。 但我不知道Mokito如何为我的测试创建对象? 我在这里看不到任何特别的东西,因为好像mokito实例化实际对象。 public class TestCase1{ @Mock MyClass myClass; public void setup(){ MokitoAnnotations.initMoks(this); } @Test public void testAddition(){ when(myClass.add(2,2)).thenReturn(20); assertEquals(4,myClass.add(2,2)); } } 我的实际课程( MyClass.java ) public class MyClass{ public int add(int x, int y){ return x+y; } } 它是否嘲弄一个对象,就像注入(DI)一个对象一样? 我感谢您的帮助!

泽西岛 – 如何模拟服务

我正在使用“Jersey测试框架”对我的网络服务进行unit testing。 这是我的资源类: import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; // The Java class will be hosted at the URI path “/helloworld” @Path(“/helloworld”) public class class HelloWorldResource { private SomeService service; @GET @Produces(“text/plain”) public String getClichedMessage() { // Return some cliched textual content String responseFromSomeService = service.getSomething(); return responseFromSomeService; } } 如何在unit testing中模拟SomeService?

使用reflection更改静态最终File.separatorChar进行unit testing?

具体来说,我正在尝试为一个方法创建一个unit testing,该方法需要使用File.separatorChar在windows和unix上构建路径。 代码必须在两个平台上运行,但当我尝试更改此静态final字段时,我会收到JUnit错误。 任何人都知道发生了什么事吗? Field field = java.io.File.class.getDeclaredField( “separatorChar” ); field.setAccessible(true); field.setChar(java.io.File.class,’/’); 当我这样做时,我明白了 IllegalAccessException: Can not set static final char field java.io.File.separatorChar to java.lang.Character 思考?

使用不同的类加载器进行不同的JUnit测试?

我有一个Singleton / Factory对象,我想为其编写一个JUnit测试。 Factory方法根据类路径上属性文件中的类名决定实例化哪个实现类。 如果未找到属性文件,或者属性文件不包含classname键,则该类将实例化默认实现类。 由于工厂在实例化后保持Singleton的静态实例使用,为了能够在Factory方法中测试“故障转移”逻辑,我需要在不同的类加载器中运行每个测试方法。 有没有办法使用JUnit(或其他unit testing包)来做到这一点? 编辑:这里是一些正在使用的Factory代码: private static MyClass myClassImpl = instantiateMyClass(); private static MyClass instantiateMyClass() { MyClass newMyClass = null; String className = null; try { Properties props = getProperties(); className = props.getProperty(PROPERTY_CLASSNAME_KEY); if (className == null) { log.warn(“instantiateMyClass: Property [” + PROPERTY_CLASSNAME_KEY + “] not found in properties, using default […]