Если вы отчаянно хотите сделать это, вы можете либо попробовать использовать eval ():
var data = "testVariable";
eval("var temp_" + data + "=123;");
alert(temp_testVariable);
, либо использовать оконный объект:
var data = "testVariable";
window["temp_" + data] = 123;
alert(window["temp_" + data]);
http: //www.hiteshagrawal.com/javascript/dynamic-variables-in-javascript
Класс DriverManager
попытается загрузить классы драйвера, указанные в системном свойстве "jdbc.drivers"
, как часть его инициализации. Это происходит, когда класс DriverManager
загружается, т. Е. Даже до вызова любого метода, подобного getConnection()
. Таким образом, это не то, что исключение, которое вы получаете, связано с тем, что вызываются реальные getConnection()
. Это связано с тем, что вы не включили настоящий класс класса в путь класса, как видно из вашего pom
, который DriverManager
может загружать во время его инициализации. Итак, включите драйвер в свой pom
, а затем попробуйте.
См. https://docs.oracle.com/javase/7/docs/api/java/sql/DriverManager. html и static
в исходном коде класса DriverManager в https://github.com/JetBrains/jdk8u_jdk/blob/master/src/share/classes/java/sql/DriverManager. Java .
Решение, которое работает в конечном итоге, когда я создаю экземпляр объекта objectUnderTest и помещаю его имя класса в аннотацию @PrepareForTest (без учета предупреждений в внешней консоли). Хотя я понятия не имею, почему он работает таким образом:
@RunWith(PowerMockRunner.class)
@PrepareForTest(DriverManager.class, MyClass.class)
public class MyClassTest {
@Before
public void setUp() throws Exception {
Connection connection = mock(Connection.class);
Statement statement = mock(Statement.class);
PowerMockito.mockStatic(DriverManager.class);
PowerMockito.when(DriverManager.getConnection(anyString(), anyString(), anyString())).thenReturn(connection);
}
@Test
public void testMain() {
// arrange
String[] args = {"name", "password", "database"};
MyClass myClass = new MyClass();
myClass.method();
...
}