, необходимо использовать правильный инструмент, чтобы сделать правильную вещь, и Python не был разработан, чтобы быть запутанным. Это - обратное; все открыто или легко показать или изменить в Python, потому что это - философия языка.
, Если Вы хотите что-то, которое Вы не видите через, ищите другой инструмент. Это не плохая вещь, важно, чтобы несколько различных инструментов существовали для различных использований.
, Даже скомпилированные программы могут быть перепроектированы, так не думайте, что можно полностью защитить любой код. Можно проанализировать запутываемый PHP, повредить ключ шифрования флэш-памяти и т.д. Более новые версии Windows взламываются каждый раз.
, Вы не можете препятствовать тому, чтобы кто-то неправильно использовал Ваш код, но можно легко обнаружить, делает ли кто-то. Поэтому это - просто случайный юридический вопрос.
В наше время, бизнес-модели имеют тенденцию идти для продажи услуг вместо продуктов. Вы не можете скопировать сервис, пирата, ни украсть его. Возможно, пора рассмотреть для движения с потоком...
Существует MemoryAppender , но он не является частью стандартной библиотеки log4j.
Вы можете легко написать свой собственный, но если вы используете их только для модуля тесты Я бы, вероятно, издевался над Регистратором и утверждал, что к нему не обращаются. Переопределите метод getLogger () в целевом классе или установите фиктивный регистратор непосредственно для типа.
Использование Jmock (пример из памяти, извините за любые ошибки):
public void testDoFoo() {
Mockery mockery = new Mockery();
Logger mockLogger = mockery.mock(Logger.class);
Foo foo = new Foo();
foo.setLogger(mockLogger);
mockery.checking(new Expectations() {
{
never(mockLogger).debug(with(any(String.class));
}
};
...
//do the actual test.
//assert the mock type has never been called.
mockery.assertIsSatisfied();
}
Я не верю, что есть. Однако вы можете легко написать свой собственный. Вот подходящее руководство .